input และ output เป็นตัวเลขคริสตจักร
00000000 01011111 01100101 11101101 0
ในแคลคูลัสแลมบ์ดามันเป็นλ เมตร λ n λ f . λ x m f ( n f x )
ดัชนี De Bruijn : λλλλ 4 2 (3 2 1)
แลมบ์ดาแคลคูลัสเป็นวิธีที่กระชับในการอธิบายการทำแผนที่ (ฟังก์ชั่น)
ยกตัวอย่างเช่นงานนี้สามารถเขียนเป็นλ x λ Y x + y
สิ่งที่ควรทราบคือนี่ไม่ใช่แลมบ์ดา (ฟังก์ชัน) ซึ่งรับสองอาร์กิวเมนต์ นี่คือแลมบ์ดาที่ซ้อนกัน อย่างไรก็ตามมันทำตัวเหมือนแลมบ์ดาซึ่งรับสองข้อโต้แย้งดังนั้นมันสามารถอธิบายได้อย่างไม่เป็นทางการเช่นนี้ แลมบ์ดาทุกคนรับอย่างเป็นทางการเพียงครั้งเดียว
ตัวอย่างเช่นถ้าเราใช้แลมบ์ดานี้กับ 3 และ 4:
(λ x . λ y . x + y ) 3 4 ≡ (λ y . 3 + y ) 4 ≡ 3 + 4 = 7
ดังนั้นแลมบ์ดาตัวแรกจะส่งกลับแลมด้าอีกครั้งหนึ่ง
เลขคริสตจักรเป็นวิธีในการทำไปด้วยเครื่องหมายพิเศษทิ้งไว้โดยมีสัญลักษณ์แลมด้าและตัวแปร
แต่ละหมายเลขในระบบของคริสตจักรเป็นแลมบ์ดาที่ระบุจำนวนครั้งที่ใช้ฟังก์ชันกับรายการ
ให้ฟังก์ชั่นเป็นFและรายการที่จะx
ดังนั้นหมายเลข 1 จะสอดคล้องกับλ ฉ λ x f xซึ่งหมายถึงใช้fกับxหนึ่งครั้ง
จำนวน 3 ตัวอย่างเช่นจะλ ฉ λ x f ( f ( f x )) ซึ่งหมายถึงใช้กับfถึงxสามครั้ง
ดังนั้นเพื่อเพิ่มสองคริสตจักรเลข (พูด, ม.และn ) ด้วยกันก็เป็นเช่นเดียวกับการใช้Fเพื่อx , ม. + nครั้ง
เราสามารถสังเกตเห็นว่าเรื่องนี้เป็นเช่นเดียวกับการใช้ครั้งแรกฉไปx , nครั้งแล้วใช้Fที่จะส่งผลให้รายการมครั้ง
ยกตัวอย่างเช่น2จะหมายถึงf(f(x))
และ3จะหมายถึงf(f(f(x)))
เพื่อให้2 + 3f(f(f(f(f(x)))))
จะเป็น
เมื่อต้องการใช้ฉไปx , nครั้งเรามีn ฉ x
คุณสามารถดูmและnเป็นฟังก์ชั่นรับสองอาร์กิวเมนต์อย่างไม่เป็นทางการ
จากนั้นเราใช้fกับรายการผลลัพธ์นี้อีกครั้งm : m f ( n f x )
จากนั้นเราจะเพิ่มกลับสำเร็จรูปเพื่อให้ได้λ เมตร λ n λ f . λ x m f ( n f x )
ตอนนี้เราจะต้องแปลงเป็นดัชนี De Bruijn
ประการแรกเรานับ "ระยะทางสัมพัทธ์" ระหว่างตัวแปรแต่ละตัวกับการประกาศแลมบ์ดา ตัวอย่างเช่นmจะมีระยะทาง 4 เนื่องจากมีการประกาศ 4 lambdas "ที่ผ่านมา" ในทำนองเดียวกันnจะมีระยะทาง 3, fจะมีระยะทาง 2 และxจะมีระยะทาง 1
ดังนั้นเราเขียนมันเป็นรูปแบบกลางนี้: λ เมตร λ n λ f . λ x 4 2 (3 2 1)
จากนั้นเราลบการประกาศตัวแปรทิ้งเราไว้กับ: λλλλ 4 2 (3 2 1)
ตอนนี้เราแปลงเป็นแคลคูลัสแลมบ์ดาไบนารี
กฎคือ:
00
λจะกลายเป็น
- ม. n (จัดกลุ่ม)
01 m n
จะกลายเป็น
- หมายเลขฉันจะกลายเป็น
1
ฉันครั้ง + 0
เช่น 4 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