"Прикладне замовлення" та "Звичайний порядок" в лямбда-числення


14

Порядок застосування: Завжди повністю оцінюйте аргументи функції перед оцінкою самої функції, наприклад -

(λx.x2(λx.(x+1)  2)))(λx.x2(2+1)) (λх.х2(3)) 32  9

Нормальний порядок: вираз буде зменшено ззовні в, наприклад -

(λх.х2(λх.(х+1) 2)) (λх.(х+1)   2)2 (2+1)2 32  9

НехайМ=(λх.у (λх.(х  х) λх.(х  х)))

Чому так, згідно з прикладним порядком, нескінченна петля, але за нормальним порядком,М
Му ?


1
Ви взагалі намагалися їх оцінити? Це незрозумілий перший чи другий випадок?
Karolis Juodelė

@ KarolisJuodelė: 1st
URL87

1
Не слід чи вираз лямбда бути написано з круглими дужками , щоб відзначити кінець першої лямбда - вираз і початок аргументу, наприклад:Let M = (λx.y) ((λx.(x x)) λx.(x x))
mattgately

Відповіді:


7

- нескінченна петля, оскільки λ x . ( x x ) λ x . ( x x ) λ x . ( x x ) λ x . ( x x ) Зауважте, що λ x . ( х(λх.у (λх.(х  х) λх.(х  х)))

λх.(х  х) λх.(х  х)λх.(х  х) λх.(х  х)
просто пише, що це аргумент двічі.λх.(х  х)

15

Термін, який ви скорочуєте, - де K y - постійна функція λ x . y (він завжди повертається y , ігноруючи його аргумент) і Ω = ( λ x . ( x)(КуΩ)Куλх.ууΩ=(λх.(хх)λх.(хх))ΩΩΩ . (Обов’язково опрацюйте це на папері хоча б раз у житті.)

ΩММΩМΩ , і це зменшення, обране стратегією додаткового порядку.

КуКу(КуΩ)уКуNуN , і це зменшення, обране звичайною стратегією порядку.

Цей випадок ілюструє більш загальне явище: прикладне скорочення порядку лише коли-небудь знаходить нормальну форму, якщо термін сильно нормалізується, тоді як нормальне скорочення порядку завжди знаходить нормальну форму, якщо така є. Це трапляється тому, що прикладне замовлення завжди спочатку оцінює повністю аргументи, і тому пропускає можливість аргумент виявитися невикористаним; тоді як звичайний порядок оцінює аргументи якомога пізніше, і тому завжди виграє, якщо аргумент виявиться невикористаним.

(Зворотний бік полягає в тому, що прикладне замовлення має тенденцію бути швидшим на практиці, оскільки аргумент порівняно рідко не може бути використаний; тоді як аргумент використовується декілька разів, а в порядку застосування аргумент оцінюється лише один раз. Нормальний order оцінює аргумент так часто, як він використовується, будь то 0, 1 або багато разів.)


КуNNу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.