Một đánh giá tính toán lambda liên quan đến số nhà thờ


10

Tôi hiểu rằng một số Giáo hội trông giống như (... n lần ...) . Điều này có nghĩa là không có gì nhiều hơn "hàm được áp dụng lần cho hàm ". λ s . λ z . s scnλs.λz.ss n zszsnz

Một định nghĩa có thể có của hàm là như sau: . Nhìn vào cơ thể, tôi hiểu logic đằng sau chức năng. Tuy nhiên, khi tôi bắt đầu đánh giá, tôi bị kẹt. Tôi sẽ minh họa nó bằng một ví dụ:t i m e s = λ m . λ n . λ s . mtimestimes=λm.λn.λs.m(ns)

(λm.λn.λs.m(ns))(λs.λz.ssz)(λs.λz.sssz)λs.(λs.λz.ssz)((λs.λz.sssz)s))λs.(λs.λz.ssz)(λz.sssz)λs.λz.(λz.sssz)(λz.sssz)z

Bây giờ trong tình huống này, nếu lần đầu tiên tôi áp dụng , tôi sẽ nhận được kết quả mong muốn. Tuy nhiên, nếu tôi áp dụng trước tiên, vì tôi nên bởi vì ứng dụng được liên kết từ bên trái, tôi nhận được một kết quả sai:(λz.sssz)z(λz.sssz)(λz.sssz)

λs.λz.(λz.sssz)(λz.sssz)zλs.λz.(sss(λz.sssz))z

Tôi không còn có thể giảm điều này. Tôi đang làm gì sai? Kết quả phải làλs.λz.ssssssz


Các chữ số của Giáo hội trong nhiệm kỳ bắt đầu của bạn không đúng. 2 được đại diện bởi , không phải . λs.λz.s(sz)λs.λz.ssz
Uday Reddy

Câu trả lời:


7

Tôi nghĩ rằng sự giảm bớt của bạn là chính xác (mặc dù tôi chỉ nhìn thấy nó). Cuối cùng, bạn không thể áp dụng cho , điều này không bao giờ xuất hiện trong thuật ngữ. là , không phải . Các hàm trong lambda-compus có một đối số duy nhất; họ đang có hiệu quả cà ri : một chức năng hai đối số được thực hiện như một chức năng một lập luận cho rằng có đối số đầu tiên và trả về một chức năng một lập luận mới đưa đối số thứ hai và trả về kết quả.z λ z . f f z λ z . ( F f ) z λ z . f ( f z )(λz.sssz)zλz.ffzλz.(ff)zλz.f(fz)

Bạn đã phạm sai lầm tương tự khi xác định số nhà thờ. Chữ số Church cho dựa trên việc soạn một hàm lần. “Các chức năng ứng dụng lần để chức năng ” . Những gì bạn đã viết là hàm được áp dụng lần cho hàm và cuối cùng là , điều này không tấn công tôi như một thuật ngữ hữu ích.n s n z λ s . λ z . s ( s ( ... snnsnzs n - 1 s zλs.λz.s(s(sz)))sn1sz

2×3 là . Tôi sẽ cho phép bạn kiểm tra xem nó có giảm xuống .(λmns.m(ns))(λsz.s(sz))(λsz.s(s(sz)))λsz.s(s(s(s(s(sz)))))


Theo như đoạn văn của bạn, bạn đã đúng và tôi đã nhận thức được điều này. Tôi nhận ra rằng việc áp dụng kết hợp đúng đã mang lại kết quả đúng. Theo như đoạn thứ hai: bạn đúng. Không sử dụng niềng răng là sai lầm của tôi, một lần nữa vì tính kết hợp trái của ứng dụng. Tôi sẽ giảm toàn bộ một lần nữa bây giờ và xem nếu thiếu niềng răng của tôi đã gây ra lỗi của tôi!
codd

Nó đã làm. Bạn lưu ý rằng ký hiệu của tôi ngụ ý sai thứ tự ứng dụng đã giải quyết vấn đề! Chấp nhận câu trả lời của bạn.
codd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.