Bạn lập trình trong đó! Hãy nhìn vào bảng mã nhà thờ . Bạn có thể thấy khá nhiều tất cả số học có thể được thực hiện mà có lẽ sẽ thuyết phục bạn rằng nó cực kỳ mạnh mẽ. Tôi thích nhìn vào các hoạt động trên danh sách tuy nhiên. Bạn có thể định nghĩa hầu hết mọi cấu trúc dữ liệu theo chức năng thực hiện thao tác quan trọng nhất trên nó.
Ví dụ, mã hóa của một danh sách là hàm gập gấp lại nó. Lưu ý rằng đây không phải là mã hóa của Church mà là mã tôi nhận được từ các loại và ngôn ngữ lập trình của Percie. Mã hóa cặp của nhà thờ không cho chúng ta đệ quy, chúng ta phải thêm nó vào trong chính chúng ta bằng một loại tổ hợp đệ quy.
do đó, một danh sách cần hai đối số, một hàm để thực hiện việc gấp và một giá trị ban đầu để cắm vào nếp gấp tại một số điểm.
cons x xs = lam f. lam a. f x (xs f a)
nil = lam f. lam a. a
bây giờ chúng ta có thể định nghĩa một tổng kết được cung cấp một hàm add (xem phần mã hóa nhà thờ từ phía trên)
sum xs = xs add 0
chúng ta có thể làm nhiều hơn và xác định một chức năng bản đồ
consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil
nếu bạn vẫn không tin rằng có sự tính toán đang diễn ra ở đây và muốn chắc chắn rằng bạn có thể thực hiện bất kỳ tính toán nào thì hãy kiểm tra bộ kết hợp điểm cố định . Tuy nhiên, đôi khi tôi hơi đau đầu khi nghĩ về điều đó vì vậy tôi không chắc mình sẽ gọi nó là trực quan nhưng nếu bạn tự đánh giá nó bằng một số đối số, bạn có thể thấy những gì đang diễn ra.