แลมบ์ดาแคลคูลัสจับความคิดในการคำนวณได้ง่ายเพียงใด?


12

ฉันพยายามคลุมศีรษะด้วยอะไรทำไมและวิธีของ calculus แต่ฉันไม่สามารถเข้ามาจับได้ด้วย "ทำไมมันถึงทำงานได้"?λ

"สังหรณ์ใจ" ฉันได้รูปแบบการคำนวณของ Turing Machines (TM) แต่สกัดกั้นทำให้ฉันสับสนλ

สมมติว่า TM ไม่มีตัวตน - แล้วเราจะ "เชื่อมั่น" อย่างชาญฉลาดเกี่ยวกับความสามารถของ calculus ในการจับภาพความคิดในการคำนวณนี้ได้อย่างไร การมีฟังก์ชั่นมากมายสำหรับทุกสิ่งและความสามารถในการเรียงความของพวกเขาบ่งบอกถึงการคำนวณได้อย่างไร ฉันหายไปนี่อะไร ฉันอ่านบทความของ Alonzo Church แต่ฉันยังสับสนและมองหาความเข้าใจที่มากกว่าเดิมλ


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

2
ฉันไม่เคยเห็นใครสงสัยเลยว่าฟังก์ชั่นแคลคูลัสแลมบ์ดาสามารถคำนวณได้ คำถามในอดีตคือว่าสิ่งเหล่านี้เป็นเพียงฟังก์ชันที่คำนวณได้อย่างสังหรณ์ซึ่งเป็นปัญหาที่แตกต่างอย่างสิ้นเชิงจากสิ่งที่คุณดูเหมือนจะถาม
Kaveh

1
สิ่งหนึ่งที่ฉันพบว่ามีประโยชน์คือหนังสือ Raymond M Smullyan ของ "To Mock a Mockingbird" ซึ่งแทนที่หน้าที่ของนกในป่าเวทมนตร์ (และเป็นการอ่านที่ดี)
dspyz

1
หนังสือ Smullyans เป็นเรื่องเกี่ยวกับตรรกะการรวมตัวกัน
Trismegistos

คำตอบ:


21

คุณอยู่ใน บริษัท ที่ดี เคิร์ตโกเดลวิพากษ์วิจารณ์ -calculus (เช่นเดียวกับทฤษฎีของเขาเองเกี่ยวกับฟังก์ชั่นการเรียกซ้ำทั่วไป) ซึ่งไม่ได้เป็นความคิดที่น่าพอใจเกี่ยวกับความสามารถในการคำนวณในแง่ที่ว่ามันไม่ได้เป็นสัญชาตญาณหรือไม่เพียงพอ ในทางตรงกันข้ามเขาพบว่าการวิเคราะห์ความสามารถในการคำนวณของทัวริงและความเชื่อมั่นของเครื่องจักรที่ตามมา ดังนั้นไม่ต้องกังวลλ

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


4
หากการเดินเล่นเป็นเรื่องสนุกอย่างที่คุณพูดฉันก็ต้องลองดู
Radu GRIGore

อังเดรคุณรู้การอ้างอิงสำหรับสิ่งเหล่านี้หรือไม่? Godel ไม่ยอมรับโมเดลของ Chruch ในการถ่ายภาพฟังก์ชั่นที่น่าเชื่อถือทั้งหมดแต่ฉันจำไม่ได้ว่าเห็นที่ใดที่เขาวิจารณ์โมเดลมากไปกว่านั้น การวิพากษ์วิจารณ์รูปแบบแคลคูลัสแลมบ์ดาของคริสตจักรนั้นสอดคล้องกับการวิพากษ์วิจารณ์ฟังก์ชั่นทั่วไปแบบเรียกซ้ำทั่วไปของ Godel-Herbrand เท่าที่ฉันรู้
Kaveh

3
ฉันคิดว่าคุณต้องการ K. Godel: "ข้อสังเกตบางอย่างเกี่ยวกับผลลัพธ์ที่ไม่น่าเชื่อถือ" ใน Solomon Feferman, John Dawson และ Stephen Kleene (บรรณาธิการ), Kurt Gödel: รวบรวมผลงานฉบับที่ Ii สำนักพิมพ์มหาวิทยาลัยออกซ์ฟอร์ด 305--306 (1972) ดูbooks.google.si/…
Andrej Bauer

6

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

ตัวอย่างเช่นการเข้ารหัสของรายการเป็นฟังก์ชั่นพับที่พับมากกว่า โปรดทราบว่านี่ไม่ใช่การเข้ารหัสของคริสตจักร แต่สิ่งหนึ่งที่ฉันได้รับจากประเภทของ Percie และภาษาการเขียนโปรแกรม การเข้ารหัสคู่ของคริสตจักรไม่ได้ให้เราเรียกซ้ำเราต้องเพิ่มมันกลับเข้าไปในตัวเราด้วย combinator การเรียกซ้ำ

ดังนั้นรายการจึงต้องมีสองข้อโต้แย้งฟังก์ชั่นในการทำ fold และค่าเริ่มต้นที่จะเสียบเข้ากับ fold ในบางจุด

cons x xs = lam f. lam a. f x (xs f a)
nil       = lam f. lam a. a

ตอนนี้เราสามารถกำหนดผลรวมที่ได้รับเพิ่มฟังก์ชั่น (ดูการเข้ารหัสคริสตจักรจากด้านบน)

sum xs = xs add 0

เราสามารถทำอะไรได้มากกว่าและกำหนดฟังก์ชั่นแผนที่

consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil

ถ้าคุณยังคงไม่มั่นใจว่ามีการคำนวณเกิดขึ้นที่นี่และต้องการที่จะให้แน่ใจว่าคุณสามารถดำเนินการใด ๆ การคำนวณแล้วตรวจสอบCombinator จุดคงที่ มันทำให้ฉันปวดหัวเล็กน้อย แต่บางครั้งฉันก็ไม่แน่ใจว่าฉันจะเรียกมันว่าสัญชาตญาณ แต่ถ้าคุณประเมินมันด้วยตัวเองด้วยข้อโต้แย้งบางอย่างคุณจะเห็นว่าเกิดอะไรขึ้น

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