“ คำสั่งบังคับใช้” และ“ คำสั่งปกติ” ในแลมบ์ดาแคลคูลัส


14

คำสั่งที่ใช้บังคับ:ประเมินข้อโต้แย้งของฟังก์ชั่นอย่างเต็มที่ก่อนที่จะประเมินฟังก์ชั่นของตัวเองเช่น -

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

คำสั่งปกติ:การแสดงออกจะลดลงจากภายนอกในเช่น -

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

ให้M=(λx.y (λx.(x  x) λx.(x  x)))

ทำไมมันจึงเป็นว่าภายใต้คำสั่ง applicative, อนันต์ห่วง แต่ภายใต้การสั่งซื้อปกติM Y ?M
MY


1
คุณเคยลองประเมินพวกเขาหรือไม่? มันเป็นคดีแรกหรือคดีที่สองที่ไม่ชัดเจน?
Karolis Juodelė

@ KarolisJuodelė: วันที่ 1
URL 87

1
ไม่ควรเขียนการแสดงออกแลมบ์ดาด้วยเครื่องหมายวงเล็บเพื่อทำเครื่องหมายจุดสิ้นสุดของการแสดงออกแลมบ์ดาแรกและการเริ่มต้นของการโต้แย้งเช่น:Let M = (λx.y) ((λx.(x x)) λx.(x x))
แมตต์

คำตอบ:


7

เป็นวง จำกัด เพราะ λ x ( x x ) λ x ( x x ) →การλ x ( x x ) λ x ( x x ) ให้สังเกตว่า λ x ( x(λx.Y (λx.(x  x) λx.(x  x)))

λx.(x  x) λx.(x  x)λx.(x  x) λx.(x  x)
เพียงแค่เขียนอาร์กิวเมนต์มันสองครั้งλx.(x  x)

15

(KYΩ)KYλx.YYΩ=(λx.(xx)λx.(xx))เป็นคำที่ไม่สิ้นสุด ในบางแง่Ω เป็นคำที่ไม่สิ้นสุดขั้นสุดท้าย: มันลดเบต้าให้กับตัวเองเช่น ΩΩ. (ตรวจสอบให้แน่ใจว่าได้ทำมันลงบนกระดาษอย่างน้อยหนึ่งครั้งในชีวิตของคุณ)

การลดคำสั่งซื้อแบบบังคับต้องลดอาร์กิวเมนต์ของฟังก์ชันให้อยู่ในรูปแบบปกติก่อนที่จะสามารถประเมิน redex ระดับบนสุดได้ ตั้งแต่การโต้แย้งΩไม่มีรูปแบบปกติการลดคำสั่งสมัครจะวนซ้ำ โดยทั่วไปสำหรับคำใด ๆM, MΩMΩและนี่คือการลดที่เลือกโดยกลยุทธ์คำสั่งการสมัคร

การลดคำสั่งปกติเริ่มต้นด้วยการลด redex ระดับบนสุด (เพราะฟังก์ชั่น KYอยู่ในรูปแบบปกติแล้ว) ตั้งแต่KY ละเว้นการโต้แย้ง (KYΩ)Yในขั้นตอนเดียว ให้เป็นปกติมากกว่านี้,KYยังไม่มีข้อความY สำหรับคำใด ๆ ยังไม่มีข้อความและนี่คือการลดที่เลือกโดยกลยุทธ์ลำดับปกติ

กรณีนี้แสดงให้เห็นถึงปรากฏการณ์ที่ทั่วไปมากขึ้น: การลดคำสั่งแบบบังคับใช้จะพบรูปแบบปกติเท่านั้นหากคำนั้นเป็นคำที่ทำให้เป็นมาตรฐานอย่างยิ่ง สิ่งนี้เกิดขึ้นเนื่องจากคำสั่งการสมัครจะประเมินข้อโต้แย้งอย่างเต็มที่ก่อนเสมอดังนั้นจึงพลาดโอกาสที่การโต้แย้งจะกลายเป็นไม่ได้ใช้งาน ในขณะที่คำสั่งปกติจะประเมินผลการโต้แย้งให้ช้าที่สุดเท่าที่จะเป็นไปได้และจะชนะเสมอหากการโต้แย้งนั้นไม่ได้ใช้งาน

(ด้านพลิกคือคำสั่งการสมัครมีแนวโน้มที่จะเร็วขึ้นในทางปฏิบัติเพราะมันค่อนข้างหายากสำหรับการโต้เถียงที่จะไม่ได้ใช้ในขณะที่มันเป็นเรื่องธรรมดาสำหรับการโต้แย้งที่จะใช้หลายครั้งและภายใต้ลำดับการสมัครอาร์กิวเมนต์จะประเมินเพียงครั้งเดียว คำสั่งซื้อประเมินอาร์กิวเมนต์บ่อยเท่าที่มันถูกใช้ไม่ว่าจะเป็น 0, 1 หรือหลาย ๆ ครั้ง)


ฉันคิดว่าคุณพิมพ์ผิดในวรรค 3 KYยังไม่มีข้อความยังไม่มีข้อความ ควรจะเป็น Yใช่มั้ย ไม่ว่า +1
Karolis Juodelė
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.