4
ทำไมจึงเป็นสิ่งสำคัญสำหรับฟังก์ชั่นที่จะไม่ระบุชื่อในแลมบ์ดาแคลคูลัส?
ฉันกำลังดูการบรรยายของ Jim Weirich หัวข้อ ' Adventures in Functional Programming ' ในการบรรยายครั้งนี้เขาแนะนำแนวคิดของ Y-combinators ซึ่งโดยพื้นฐานแล้วพบว่าจุดคงที่สำหรับฟังก์ชันลำดับที่สูงขึ้น แรงจูงใจอย่างหนึ่งที่เขากล่าวถึงคือสามารถแสดงฟังก์ชันแบบเรียกซ้ำโดยใช้แลมบ์ดาแคลคูลัสเพื่อให้ทฤษฎีโดยคริสตจักร (สิ่งที่คำนวณได้อย่างมีประสิทธิภาพสามารถคำนวณได้โดยใช้แคลคูลัสแลมด้า) ปัญหาก็คือฟังก์ชั่นไม่สามารถเรียกตัวเองได้อย่างง่าย ๆ เพราะแคลคูลัสแลมบ์ดาไม่อนุญาตให้ใช้ฟังก์ชั่นที่ตั้งชื่อเช่น n(x,y)=x+yn(x,y)=x+Yn(x, y) = x + y ไม่สามารถรับชื่อ ' ' ได้จะต้องกำหนดโดยไม่ระบุชื่อ:nnn ( x ,y)→x+y(x,y)→x+y(x, y) \rightarrow x + y ทำไมการแคลคูลัสแลมบ์ดาจึงมีฟังก์ชั่นที่ไม่มีชื่อ หลักการใดที่ถูกละเมิดหากมีฟังก์ชั่นที่มีชื่อ? หรือว่าฉันเพิ่งเข้าใจผิดวิดีโอของจิม