Đầu vào và đầu ra là số nhà thờ .
00000000 01011111 01100101 11101101 0
Trong phép tính lambda , nó là λ m . λ n . λ f . λ x . m f ( n f x ).
Chỉ số De Bruijn : λ λ λ 4 2 (3 2 1)
Phép tính Lambda là một cách ngắn gọn để mô tả một ánh xạ (hàm).
Ví dụ, tác vụ này có thể được viết là λ x . λ y . x + y
Điều cần lưu ý là, đây không phải là lambda (hàm) có hai đối số. Đây thực sự là một lambda lồng nhau. Tuy nhiên, nó hoạt động giống như một lambda có hai đối số, vì vậy nó có thể được mô tả không chính thức như vậy. Mỗi lambda chính thức chỉ mất một đối số.
Ví dụ: nếu chúng tôi áp dụng lambda này cho 3 và 4:
(λ x . λ y . X + y ) 3 4 (λ y . 3 + y ) 4 ≡ 3 + 4 = 7
Vì vậy, lambda đầu tiên thực sự trả lại một lambda khác.
Chữ số nhà thờ là một cách để loại bỏ các dấu hiệu phụ, chỉ còn lại các biểu tượng và biến lambda.
Mỗi số trong hệ thống Giáo hội thực sự là một lambda chỉ định số lần chức năng được áp dụng cho một mục.
Đặt hàm là f và mục là x .
Vì vậy, số 1 sẽ tương ứng với λ f . λ x . f x , có nghĩa là áp dụng f cho x chính xác một lần.
Số 3, ví dụ, sẽ là λ f . λ x . f ( f ( f x )), có nghĩa là áp dụng f cho x chính xác ba lần.
Do đó, để cộng hai chữ số Church (giả sử m và n ) với nhau, nó giống như áp dụng f cho x , m + n lần.
Chúng ta có thể quan sát rằng điều này giống như lần đầu tiên áp dụng f cho x , n lần, và sau đó áp dụng f cho mục kết quả m lần.
Ví dụ: 2 có nghĩa là f(f(x))
và 3 có nghĩa là f(f(f(x)))
, vì vậy 2 + 3 sẽ là f(f(f(f(f(x)))))
.
Để áp dụng f cho x , n lần, ta có n f x .
Bạn có thể xem m và n là các hàm lấy hai đối số, không chính thức.
Sau đó, chúng tôi áp dụng lại f cho mục kết quả này, m lần: m f ( n f x ).
Sau đó, chúng tôi thêm lại bản tóm tắt để thu được λ m . λ n . λ f . λ x . m f ( n f x ).
Bây giờ, chúng ta phải chuyển đổi nó thành chỉ số De Bruijn .
Đầu tiên, chúng tôi đếm "khoảng cách tương đối" giữa mỗi biến với khai báo lambda. Ví dụ: m sẽ có khoảng cách là 4, vì nó được khai báo là 4 lambdas "trước đây". Tương tự, n sẽ có khoảng cách là 3, f sẽ có khoảng cách là 2 và x sẽ có khoảng cách là 1.
Vì vậy, chúng tôi viết nó dưới dạng trung gian này: λ m . λ n . λ f . λ x . 4 2 (3 2 1)
Sau đó, chúng tôi xóa các khai báo biến, để lại cho chúng tôi: λ λ λ 4 2 (3 2 1)
Bây giờ, chúng tôi chuyển đổi nó để tính toán lambda nhị phân .
Các quy tắc là:
- trở thành
00
.
- m n (nhóm) trở thành
01 m n
.
- số i trở thành
1
i lần + 0
, ví dụ 4 trở thành 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