Яка користь від нотації Кривіна?


9

Я бачив, як деякі люди використовують позначення Кривіна для застосування функції, представляючи синтаксис для -calculus. Наприклад, -term (при звичайній умові, що функція програми пов'язується зліва, тому вона фактично означає ) записується (з аналогічною умовою, що це насправді означає ). Я не бачу сенсу мати ще одну пару дужок навколо найпотаємнішої . Чому люди використовують позначення Кривіна замість звичного?λλλf.λх.λу.f х уλf.λх.λу.((f х) у)λf.λх.λу.(f) х уλf.λх.λу.((f) х) уf

Відповіді:


13

Я припускаю, що ви маєте на увазі позначення Кривіна з обчислення Лямбди : типи та моделі .

Ця позначення, що використовується як представлення даних, робить багато алгоритмів на лямбда-термінах більш простими у здійсненні та доведення правильності. Тобто, даючи лямбда-термін , ви хочете розглядати це як голову разом зі списком аргументів .fе1е2ен f[е1,е2,,ен]

Наприклад, припустимо, ви хочете порівняти два терміни з . Найчастіше закономірно спочатку порівнювати головки і , і навіть не дивитися на пари якщо це порівняння не вдається. (Це часто виникає при реалізації об'єднання вищого порядку.)fе1енгт1тнfг(еi,тi)

Дивіться у статті Сервесато та Пфеннінга « Лінійне обчислення хребта» для формалізації цієї ідеї.


0

Одна цікава відмінність виявляється у розділі 2 "Представницькі функції" глави 2 книги Крівіна. Три кодовані церквою три написані в стандартних позначеннях якλ х. λ у. х (х (х у)). З позначенням Кривіна (якщо я нарешті це правильно зрозумію!), Ми б писали замість цьогоλх λу (х)(х)(х)у.

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