Sözdiziminde ve özellikle yakalamadan kaçınma ikamesinde bağlı değişkenleri temsil etme sorunu iyi bilinir ve birtakım çözümlere sahiptir: alfa denkliğine sahip değişkenler, de Bruijn indeksleri, yerel olarak adsızlık, nominal kümeler vb.
Ama yine de hiçbir yerde kullanılmadığını gördüğüm oldukça açık bir yaklaşım var gibi görünüyor. Yani, temel sözdiziminde tek bir "değişken" terimimiz var, say yazıyor ve sonra ayrı ayrı, her bir değişkeni kapsamı içinde olan bir bağlayıcıyla eşleştiren bir işlev veriyoruz. Yani bir -term gibiλ
yazılır ve işlev, ilk \ madde işaretini ilk \ lambda'ya ve ikinci \ madde işaretini ikinci \ lambda'ya eşler . Bu yüzden de Bruijn endeksleri gibi, sadece karşılık gelen bağlayıcıyı bulmak için terimden çıkarken "say \ lambda s" yerine, bir işlevi değerlendirirsiniz. (Bunu bir uygulamada bir veri yapısı olarak temsil edersem, her değişken terim nesnesini karşılık gelen cilt terim nesnesine basit bir işaretçi / referansla donatmayı düşünürüm.)
Açıkçası bu, insanların okuması için bir sayfaya sözdizimi yazmak için mantıklı değildir, ancak ikisi de de Bruijn endeksleri değildir. Bana öyle geliyor ki, matematiksel olarak mükemmel bir anlam ifade ediyor ve özellikle yakalamadan kaçınmayı ikame etmeyi çok kolay hale getiriyor: sadece yerine koyduğunuz terimi bırakın ve bağlayıcı fonksiyonların birleşimini alın. "Serbest değişken" kavramına sahip olmadığı doğrudur, ama sonradan (yine) de Bruijn endeksleri gerçekten de yoktur; her iki durumda da, serbest değişkenleri içeren bir terim, önünde "bağlam" bağlayıcıları olan bir terimi temsil eder.
Bir şey mi kaçırıyorum ve bu temsilin işe yaramamasının bir nedeni var mı? Diğerlerinden çok daha kötü hale getiren problemler var mı? (Şu anda düşünebildiğim tek sorun, terimlerin (bağlayıcı işlevleriyle birlikte) indüktif olarak tanımlanmadığı, ancak bu aşılamaz görünmüyor olması.) Yoksa aslında kullanıldığı yerler var mı?