Kilise sayıları olarak girdi ve çıktı .
00000000 01011111 01100101 11101101 0
Olarak lambda kalkülüs , bu λ bir m . λ n . λ f . λ x . m f ( n f x ).
De Bruijn Endeksi : λ λ λ λ 4 2 (3 2 1)
Lambda hesabı , bir haritayı tanımlamanın kısa bir yoludur (fonksiyon).
Örneğin, bu görev λ x olarak yazılabilir . λ y . x + y
Dikkat edilmesi gereken, bunun iki argüman alan bir lambda (fonksiyon) olmadığıdır. Bu aslında yuvalanmış bir lambdadır. Ancak, iki argüman alan bir lambda gibi davranır, bu nedenle gayrı resmi olarak tanımlanabilir. Her lambda resmen sadece bir argüman alır.
Örneğin, bu lambda'yı 3 ve 4'e uygularsak:
(λ x . λ y . x + y ) 3 4 ≡ (λ y . 3 + y ) 4 ≡ 3 + 4 = 7
Böylece, ilk lambda aslında başka bir lambda döndürür.
Kilise rakamları , sadece lambda sembolleri ve değişkenleri bırakarak, ekstra işaretlerden kurtulmanın bir yoludur.
Kilise sistemindeki her sayı aslında işlevin bir öğeye kaç kez uygulandığını belirten bir lambdadır.
Fonksiyon f ve madde x olsun .
Böylece, 1 sayısı λ f'ye karşılık gelir . λ x . f x araçlar uygulamak, hangi f için x tam olarak bir kere.
Örneğin, 3 sayısı λ f olacaktır . λ x . f ( f ( f x aracı uygulanır)), f için x tam olarak üç kez.
Bu nedenle, iki Kilise rakamını (örneğin, m ve n ) bir araya getirmek, f , x , m + n zamanlarına uygulamakla aynıdır .
Bu ilk uygulamadan aynı olduğunu gözlemleyebilirsiniz f için x , n zamanlarda, sonra uygulayarak f çıkan madde için m süreleri.
Örneğin, 2 anlamına gelir f(f(x))
ve 3 anlamına gelir f(f(f(x)))
, bu yüzden 2 + 3 olur f(f(f(f(f(x)))))
.
Uygulamak için f için x , n kere, biz n f x .
M ve n'yi gayrı resmi olarak iki argüman alan işlevler olarak görüntüleyebilirsiniz .
Sonra biz uygulamak f bu çıkan öğe, yine m süreleri: m f ( n f x ).
Daha sonra λ m elde etmek için kazan plakasını geri ekleyin . λ n . λ f . λ x . m f ( n f x ).
Şimdi, onu De Bruijn endeksine dönüştürmeliyiz .
Öncelikle, her değişken arasındaki lambda bildirgesindeki "göreceli mesafeyi" sayarız. Örneğin, m'nin "4" mesafeli olduğu söylendiğinden 4 mesafeli olurdu. Benzer şekilde, n , 3'lük bir mesafeye sahip olacaktı , f , 2'lik bir mesafeye sahip olacaktı ve x , 1'lik bir mesafeye sahip olacaktı.
Böylece, bu ara form olarak yazıyoruz: λ m . λ n . λ f . λ x . 4 2 (3 2 1)
Ardından değişken bildirimlerini kaldırarak bizi şu şekilde bırakarak: λ λ λ λ 4 2 (3 2 1)
Şimdi, onu ikili lambda hesabına çeviriyoruz .
Kurallar:
- λ olur
00
.
- m , n (gruplama) haline gelir
01 m n
.
- numaraları ı olur
1
i kere + 0
Örnek 4 olur için, 11110
.
λ λ λ λ 4 2 (3 2 1)
) Λ λ λ λ 11110
110
( 1110
110
10
)
Λ λ λ λ λ 11110
110
0101 111011010
Λ λ λ λ λ 0101
111101100101111011010
≡ 00
00
00
00
0101
111101100101 111011010
≡ 000000000101111101100101111011010