ทำไมแลมบ์ดาแคลคูลัสจึงไม่ได้เป็นตัวแทนคอมมิเนเตอร์


18

บทความนี้แสดงให้เห็นว่ามี combinators (แทนการคำนวณเชิงสัญลักษณ์) ที่ไม่สามารถแสดงด้วยแคลคูลัสแลมบ์ดา (ถ้าฉันเข้าใจสิ่งต่าง ๆ ได้อย่างถูกต้อง):

คำตอบ:


20

มีหลายสิ่งที่เราอาจต้องการทำในทางปฏิบัติและไม่สามารถแสดงออกได้โดยตรงในแคลคูลัสแลมบ์ดา

แคลคูลัส SF เป็นตัวอย่าง พลังแห่งการแสดงออกไม่ได้เป็นข่าว ส่วนที่น่าสนใจของบทความ (ไม่ปรากฏในสไลด์) คือทฤษฎีหมวดหมู่ด้านหลัง เอสเอฟแคลคูลัสจะคล้ายคลึงกับการดำเนินการกระเพื่อมที่คุณให้ฟังก์ชั่นในการตรวจสอบการเป็นตัวแทนของการโต้แย้งของพวกเขา - เพื่อให้คุณสามารถเขียนสิ่งที่ต้องการ⟹(print (lambda (x) (+ x 2)))"(lambda (x) (+ x 2))"

อีกตัวอย่างที่สำคัญคือPlotkin ของขนานหรือ การพูดอย่างสังหรณ์ใจมีผลลัพธ์ทั่วไปที่ระบุว่าแลมบ์ดาแคลคูลัสเป็นลำดับ: ฟังก์ชันที่รับสองอาร์กิวเมนต์ต้องเลือกหนึ่งเพื่อประเมินก่อน มันเป็นไปไม่ได้ที่จะเขียนคำแลมบ์ดาor(( or⊥) ⟹ , ( or⊥⊤) ⟹⊤และor⊥⊥⟹⊥ (โดย where เป็นคำที่ไม่สิ้นสุดและ and เป็นคำที่สิ้นสุด) สิ่งนี้เรียกว่า "ขนานหรือ" เพราะการใช้งานแบบขนานสามารถทำให้ขั้นตอนเดียวของการลดและหยุดเมื่อใดก็ตามที่การโต้แย้งหนึ่งยุติ

อีกอย่างที่คุณไม่สามารถทำได้ในแคลคูลัสแลมบ์ดาก็คืออินพุต / เอาต์พุต คุณจะต้องเพิ่มดั้งเดิมสำหรับมัน

แน่นอนตัวอย่างทั้งหมดเหล่านี้สามารถแสดงในแคลคูลัสแลมบ์ดาโดยการเพิ่มระดับการเปลี่ยนทิศทางหนึ่งระดับโดยเป็นตัวแทนของคำแลมบ์ดาเป็นข้อมูล แต่โมเดลก็น่าสนใจน้อยลง - คุณสูญเสียความสัมพันธ์ระหว่างฟังก์ชั่นในภาษาที่จำลองและแลมบ์ดา abstractions


11

คำตอบสำหรับคำถามของคุณขึ้นอยู่กับวิธีที่คุณกำหนด "การคำนวณ" และ "ตัวแทน" ด้ายบน LTU ที่ sclv กล่าวถึงในมืออื่น ๆ ประกอบด้วยส่วนใหญ่ของคนที่พูดคุยที่ผ่านมาแต่ละเนื่องจากอื่น ๆ เพื่อให้คำจำกัดความของคำ misaligned ต่างๆ

ความแตกต่างไม่ใช่พลังการคำนวณอย่างแน่นอน - ทุกระบบภายใต้การพิจารณานั้นเทียบเท่ากับทัวริง ปัญหาคือความเท่าเทียมกันของทัวริงไม่ได้พูดอะไรเกี่ยวกับโครงสร้างหรือความหมายของการแสดงออก สำหรับเรื่องนั้นในรูปแบบที่เรียบง่ายที่สุดของการคำนวณที่ต้องการการเข้ารหัสที่ซับซ้อนหรือสถานะเริ่มต้นที่ไม่สำคัญมันอาจจะไม่ชัดเจนว่าระบบที่มีความสามารถในการคำนวณสากลหรือว่าภาพลวงตาของความเป็นสากลถูกสร้างขึ้นโดยการตีความระบบ . ตัวอย่างเช่นดูการสนทนารายชื่อผู้รับจดหมายเกี่ยวกับเครื่องทัวริงแบบ 2 สถานะ 3 สัญลักษณ์โดยเฉพาะอย่างยิ่งความกังวลที่เกิดขึ้นจาก Vaughan Pratt

ความแตกต่างที่ดึงออกมานั้นอยู่ระหว่าง:

  • สิ่งที่สามารถแสดงโดยตรงในระบบโดยกำหนดซีแมนทิกส์ให้กับการดำเนินการดั้งเดิมในลักษณะที่การดำเนินการจำเป็นต้องรักษาซีแมนทิกส์
  • สิ่งที่สามารถเป็นตัวแทนของ "ทางอ้อม" โดยการระบุขั้นตอนการตีความดำเนินการนอกระบบซึ่งการตีความจะถือว่าเป็น "ง่าย" กว่าระบบในบางแง่
  • สิ่งต่าง ๆ ที่สามารถจำลองในระบบโดยการเลเยอร์ทางอ้อมที่สมบูรณ์เช่นโดยการสร้างล่ามสำหรับระบบอื่นที่ให้การเป็นตัวแทนโดยตรง

ทัวริง - ความเท่าเทียมเพียงหมายความว่าระบบตรงตามเกณฑ์ที่สามสำหรับฟังก์ชันการคำนวณใด ๆ ในขณะที่มันมักจะเป็นเกณฑ์แรกที่เราสนใจทั้งในระบบที่เป็นทางการของตรรกะหรือภาษาการเขียนโปรแกรม

นั่นเป็นคำอธิบายที่ไม่เป็นทางการ แต่ความคิดที่สำคัญนั้นสามารถถูกจับได้แม่นยำยิ่งขึ้น ในเธรด LtU ดังกล่าวสามารถพบการอ้างอิงสอง ถึงงานที่มีอยู่ตามบรรทัดที่คล้ายกัน


ทั้งตรรกะเชิงผสมของSchönfinkelและ calcul-แคลคูลัสของคริสตจักรนั้นได้ถูกคิดค้นขึ้นในตอนแรกว่าเป็นนามธรรมที่กลั่นจากการให้เหตุผลเชิงตรรกะและด้วยเหตุนี้โครงสร้างของพวกเขาจึงจับคู่กับเหตุผลเชิงตรรกะ พวกเขายังมีข้อสันนิษฐานของการขยายเช่นอธิบายไว้โดยกฎการลด - กทพ.: λx. f xที่ไหนxไม่เกิดขึ้นfเทียบเท่ากับเพียงfคนเดียว

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

SF-แคลคูลัสเป็นแคลคูลัสแก้ไขที่จัดทำขึ้นเพื่อเป็นการดำเนินการดั้งเดิมรูปแบบที่ จำกัด ของการวิเคราะห์เชิงมิติ: ความสามารถในการแยกแยะนิพจน์ที่นำไปใช้บางส่วน แต่ไม่ใช่ค่าดั้งเดิมหรือนิพจน์ที่ไม่ได้ทำให้เป็นมาตรฐาน สิ่งนี้เกิดขึ้นกับแผนที่อย่างชัดเจนเกี่ยวกับแนวคิดเช่นการจับคู่รูปแบบตามที่พบในภาษาการเขียนโปรแกรมสไตล์ ML หรือมาโครที่พบใน Lisps แต่ไม่สามารถอธิบายได้ใน SK- หรือ calcul-แคลคูลัสโดยไม่ใช้งานได้อย่างมีประสิทธิภาพ

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


คุณหมายความว่ามีมุมมองที่แตกต่างกันเกี่ยวกับวิธีการคำนวณที่สามารถแสดงบนเครื่องทัวริงได้อย่างไร
Hawkeye

5

แคลคูลัส SF ของ Barry Jay สามารถมองเห็นโครงสร้างของคำศัพท์ที่ใช้กับซึ่งไม่สามารถใช้งานได้ แลมบ์ดาแคลคูลัสและตรรกะเชิงการรวมแบบดั้งเดิมนั้นใช้งานได้อย่างหมดจดดังนั้นจึงไม่สามารถทำได้

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


2
ดูการอภิปราย / อภิปรายเพิ่มเติมที่ Lambda the Ultimate: lambda-the-ultimate.org/node/3993
sclv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.