Apa manfaat notasi Krivine?

9

Saya melihat beberapa orang menggunakan notasi Krivine untuk aplikasi fungsi ketika menyajikan sintaks untuk -calculus. Sebagai contoh, -term (dengan konvensi normal yang berfungsi mengaitkan aplikasi ke kiri, sehingga sebenarnya berarti ) ditulis (dengan konvensi serupa yang sebenarnya berarti ). Saya tidak melihat gunanya memiliki sepasang kurung di sekitar bagian dalam . Mengapa orang menggunakan notasi Krivine alih-alih yang biasa?λ λ f . λ x . λ y . f x y λ f . λ x . λ y . ( ( f x ) y ) λ f . λ x . λ y . ( f ) x y λ f . λ x . λ y . ( ( f ) x ) y fλλλf.λx.λy.f x yλf.λx.λy.((f x) y)λf.λx.λy.(f) x yλf.λx.λy.((f) x) yf

hari
sumber

Jawaban:

13

Saya berasumsi maksud Anda notasi Krivine dari Lambda Calculus: Type and Models .

Notasi ini, digunakan sebagai representasi data, membuat banyak algoritma pada istilah lambda lebih mudah untuk diimplementasikan dan terbukti benar. Artinya, diberi istilah lambda , Anda ingin melihatnya sebagai kepala , bersama dengan daftar argumen .fe1e2...en f[e1,e2,...,en]

Misalnya, Anda ingin membandingkan dua istilah dengan . Sering kali paling alami untuk membandingkan kepala dan terlebih dahulu, dan bahkan tidak melihat pasangan kecuali jika perbandingan itu berhasil. (Ini sering muncul dalam implementasi unifikasi tingkat tinggi.)fe1...engt1...tnfg(esaya,tsaya)

Lihat makalah Cervesato dan Pfenning, A Linear Spine Calculus untuk formalisasi ide ini.

Neel Krishnaswami
sumber
0

Satu perbedaan menarik muncul di Bagian 2 "Fungsi yang Dapat Diwakili" dari Bab 2 buku Krivine. Tiga Gereja yang dikodekan ditulis dalam notasi standar sebagai . Dengan notasi Krivine (jika saya akhirnya memahaminya dengan benar!), Kita akan menulis sebagai gantinya . λ x. λ y. x (x (x y))λx λy (x)(x)(x)y

Aaron Stump
sumber