Masalah yang merepresentasikan variabel terikat dalam sintaksis, dan khususnya substitusi yang menghindari penangkapan, telah diketahui dan memiliki sejumlah solusi: variabel bernama dengan kesetaraan alfa, indeks de Bruijn, tanpa nama lokal, set nominal, dll.
Tetapi tampaknya ada pendekatan lain yang cukup jelas, yang saya lihat belum pernah digunakan di mana pun. Yaitu, dalam sintaksis dasar kita hanya memiliki satu istilah "variabel", ditulis katakan , dan kemudian secara terpisah kita memberikan fungsi yang memetakan setiap variabel ke pengikat yang cakupannya terletak. Jadi seperti λ -term
akan ditulis , dan fungsinya akan memetakan pertama ke pertama dan kedua ke kedua . Jadi itu semacam indeks de Bruijn, hanya alih-alih harus "menghitung λ s" saat Anda kembali keluar dari istilah untuk menemukan binder yang sesuai, Anda hanya mengevaluasi suatu fungsi. (Jika menyatakan ini sebagai struktur data dalam implementasi, saya akan berpikir untuk melengkapi setiap objek variabel-istilah dengan pointer / referensi sederhana ke objek istilah pengikat yang sesuai.)
Jelas ini tidak masuk akal untuk menulis sintaks pada halaman untuk dibaca manusia, tetapi tidak ada indeks de Bruijn. Sepertinya bagi saya itu masuk akal secara matematis, dan khususnya itu membuat penggantian-hindarkan sangat mudah: cukup masukkan istilah yang Anda gantikan dan gunakan penyatuan fungsi pengikatan. Memang benar bahwa itu tidak memiliki gagasan "variabel bebas", tetapi kemudian (lagi) tidak melakukan indeks de Bruijn benar-benar; dalam kedua kasus istilah yang berisi variabel bebas diwakili istilah dengan daftar "konteks" pengikat di depan.
Apakah saya kehilangan sesuatu dan ada alasan mengapa representasi ini tidak berfungsi? Adakah masalah yang membuatnya jauh lebih buruk daripada yang lain sehingga tidak layak dipertimbangkan? (Satu-satunya masalah yang dapat saya pikirkan saat ini adalah bahwa himpunan istilah (bersama dengan fungsi pengikatannya) tidak didefinisikan secara induktif, tetapi itu tampaknya tidak dapat diatasi.) Atau apakah sebenarnya ada tempat di mana ia telah digunakan?