Чи є різниця між та ?


11

В даний час я вивчаю обчислення лямбда і мені було цікаво наступні два різні види написання лямбда-терміна.

  1. λxy.xy
  2. λx.λy.xy

Чи є різниця в значенні чи способі застосування бета-версії, чи це лише два способи виразити одне і те ж?

Особливо таке визначення створення пари змусило мене замислитися:

пара =λxy.λp.pxy

Відповіді:


15

Це лише відмінності позначень. λxyz.t коротка для λx.λy.λz.t . Тут немає ніякої магії.

Дійсно, але ви схильні підкреслювати, що є функцією , змінюючи спосіб написання визначення. Але це дійсно те саме.pair=λxyp.pxypairtuλp.ptu


17

Перший - це абревіатура до другого. Це звичайна синтаксична умова для скорочення виразів.

З іншого боку, якщо у вас є кортежі в мові, то між ними є різниця

  1. λx.λy.xy і
  2. λ(x,y).xy .

У першому випадку я можу надати один аргумент функції та передати отриману функцію навколо інших функцій. В останньому випадку обидва аргументи повинні бути подані одночасно. Звичайно, є функція, яку можна застосувати для перетворення 1 в 2 і навпаки. Цей процес відомий як (не) заквашування .

Визначення ви згадуєте, - це кодування поняття пар у -calculus, а не пари як примітивний тип даних (як я натякав вище).λpairλ


2

Перетворення функції, яка приймає кілька аргументів до ланцюга функцій з одиничними аргументами, називається currying . Дві функції по суті однакові.

Стаття у Вікіпедії про закваску


8
Немає такого поняття, як функція, що бере кілька аргументів у лямбдальному обчисленні. є точно такий же , як , не просто в основному те саме. λ x . λ у . х уλxy.xyλx.λy.xy
sepp2k
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.