Đơn đặt hàng ứng dụng


14

Thứ tự áp dụng: Luôn đánh giá đầy đủ các đối số của hàm trước khi tự đánh giá hàm, như -

(λx.x2(λx.(x+1)  2)))(λx.x2(2+1)) (λx.x2(3)) 32  9

Thứ tự bình thường: Biểu thức sẽ được giảm từ bên ngoài vào, như -

(λx.x2(λx.(x+1) 2)) (λx.(x+1)   2)2 (2+1)2 32  9

ĐặtM=(λx.y (λx.(x  x) λx.(x  x)))

Tại sao theo thứ tự áp dụng, vòng lặp vô hạn , nhưng theo thứ tự bình thường, ?M
My


1
Bạn đã thử đánh giá chúng chưa? Đây là trường hợp thứ nhất hay thứ hai không rõ ràng?
Karolis Juodelė

@ KarolisJuodelė: 1
URL87

1
Không nên viết các biểu thức lambda bằng dấu ngoặc đơn để đánh dấu sự kết thúc của biểu thức lambda đầu tiên và bắt đầu của đối số, ví dụ:Let M = (λx.y) ((λx.(x x)) λx.(x x))
mattgantly

Câu trả lời:


7

(λx.y (λx.(x  x) λx.(x  x))) là một vòng lặp vô hạn vì Lưu ý rằng chỉ cần viết đối số hai lần.

λx.(x  x) λx.(x  x)λx.(x  x) λx.(x  x)
λx.(x  x)

15

Thuật ngữ mà bạn đang giảm là nơi K y là hàm liên tục λ x . y (nó luôn luôn trả về y , bỏ qua đối số của nó) và Ω = ( λ x . ( x(KyΩ)Kyλx.yy là một thuật ngữ không kết thúc. Trong một nghĩa nào đó Ω là một thuật ngữ không chấm dứt cuối cùng: nó beta-giảm tới chính nó, tức là Ω Ω . (Hãy chắc chắn làm việc trên giấy ít nhất một lần trong đời.)Ω=(λx.(xx)λx.(xx))ΩΩΩ

Giảm thứ tự ứng dụng phải giảm đối số của hàm thành dạng bình thường, trước khi nó có thể đánh giá redex cấp cao nhất. Kể từ khi lập luận không có hình thức bình thường, giảm trật tự applicative vòng vô hạn. Tổng quát hơn, cho bất kỳ điều khoản M , M Ω M Ω , và đây là mức giảm được lựa chọn bởi các chiến lược nhằm applicative.ΩMMΩMΩ

Việc giảm thứ tự thông thường bắt đầu bằng cách giảm redex cấp cao nhất (vì hàm đã ở dạng bình thường). Kể từ khi K y bỏ qua đối số của nó, ( K y Ω ) y trong một bước. Tổng quát hơn, K y N y cho bất kỳ thuật ngữ N nào và đây là mức giảm được lựa chọn bởi chiến lược đơn hàng thông thường.KyKy(KyΩ)yKyNyN

Trường hợp này minh họa một hiện tượng tổng quát hơn: giảm đơn hàng áp dụng chỉ tìm thấy một hình thức bình thường nếu thuật ngữ này được bình thường hóa mạnh mẽ, trong khi giảm đơn hàng bình thường luôn tìm thấy hình thức bình thường nếu có. Điều này xảy ra bởi vì thứ tự áp dụng luôn đánh giá đầy đủ các đối số trước tiên và do đó bỏ lỡ cơ hội cho một đối số hóa ra không được sử dụng; trong khi thứ tự bình thường đánh giá các đối số càng muộn càng tốt và vì vậy luôn luôn thắng nếu đối số hóa ra không được sử dụng.

(Mặt trái là thứ tự ứng dụng có xu hướng nhanh hơn trong thực tế, bởi vì nó không được sử dụng cho một đối số; thứ tự đánh giá đối số thường xuyên như nó được sử dụng, có thể là 0, 1 hoặc nhiều lần.)


Tôi cho rằng bạn đã mắc lỗi đánh máy trong đoạn 3. nên là y , phải không? Bất kể, +1. KyNNy
Karolis Juodelė
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.