ทฤษฎี SMN เป็นแนวคิดเดียวกับการแกงหรือไม่


12

ฉันกำลังศึกษาทฤษฎี SMN และแนวคิดทำให้ฉันนึกถึงการแกง

จากบทความวิกิพีเดียเกี่ยวกับทฤษฎีบท smn :

ทฤษฎีบทกล่าวว่าสำหรับภาษาการเขียนโปรแกรมที่กำหนดและจำนวนเต็มบวก m และ n มีอัลกอริทึมเฉพาะที่ยอมรับว่าเป็นอินพุตซอร์สโค้ดของโปรแกรมที่มีตัวแปรอิสระ m + n พร้อมกับค่า m อัลกอริธึมนี้สร้างซอร์สโค้ดที่สามารถทดแทนค่าสำหรับตัวแปรอิสระ m ตัวแรกได้อย่างมีประสิทธิภาพโดยปล่อยให้ส่วนที่เหลือของตัวแปรว่าง

จากบทความเกี่ยวกับการแกง :

โดยสังเขป currying บอกว่า "ถ้าคุณแก้ไขข้อโต้แย้งบางอย่างคุณจะได้รับฟังก์ชั่นของข้อโต้แย้งที่เหลืออยู่"

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


จริง การพิสูจน์การคำนวณบางอย่างมีรสชาติแบบ lambdish ทฤษฎีบท SMN มากประมาณจะช่วยให้การหลอกว่าดัชนีของฟังก์ชัน recursive เป็นคำแลมบ์ดาเพื่อให้ได้รับเราสามารถฝีมือทางการกรัม( x ) = # λ Y ϕ i ( x , y )และอ้างว่าgเป็นแบบเรียกซ้ำ แม้แต่บทพิสูจน์ทฤษฎีบทการเรียกซ้ำครั้งที่สอง (ซึ่งหาประโยชน์จาก smn) ก็คือ combinator จุดคงที่ของศาสนจักรในการปลอมตัวซ่อนอยู่ด้านหลังs ( )ϕi(,)g(x)=#λy.ϕi(x,y)gs()การใช้งาน จุดสำคัญที่นี่เป็นที่แม้ว่านับถูกกำหนดแจงพูด, หน่วยความจำ (หรือ Java หรือ ... ) เราสามารถยังคงหลอกเรามี lambdas! ϕi
ไค

smn สร้างประโยคบอกสถานะขณะที่ฟังก์ชัน curried มี "คอมไพเลอร์" แต่ความคิดก็เหมือนกัน
Raphael

คำตอบ:


15

ใช่มันเป็นสิ่งเดียวกัน

Currying เป็นแนวคิดจาก -calculus มันเป็นความเปลี่ยนแปลงระหว่าง× B Cและ( B C ) คิดว่านี่เป็น "ถ้าเรามีฟังก์ชั่นสองข้อโต้แย้งของประเภทAและBจากนั้นเราอาจแก้ไขอาร์กิวเมนต์แรก (ของประเภทA ) และเราจะได้รับฟังก์ชั่นของอาร์กิวเมนต์ที่เหลือ (ของประเภทB )" ในความเป็นจริงการเปลี่ยนแปลงนี้เป็นมอร์ฟิซึ่มส์ นี้จะทำอย่างแม่นยำทางคณิตศาสตร์โดยแบบจำลองทางคณิตศาสตร์ของ (พิมพ์) λแคลคูลัสซึ่งเป็นคาร์ทีเซียนประเภทปิดλA×BCA(B)ABABλ

มีหมวดหมู่ของชุดตัวเลข ชุดที่มีหมายเลขคือคู่โดยที่Aเป็นชุดและν A : NAเป็นการคาดการณ์บางส่วนเช่นแผนที่จากตัวเลขไปยังAซึ่งอาจไม่ได้กำหนด หากν ( n ) = xแล้วเราบอกว่าnเป็นรหัสของx ในทฤษฎีการคำนวณมีตัวอย่างมากมาย เมื่อใดก็ตามที่เราเข้ารหัสข้อมูลด้วยตัวเลขเราจะได้รับชุดตัวเลข ตัวอย่างเช่นมีหมายเลขมาตรฐาน(A,νA)AνA:ยังไม่มีข้อความAAνA(n)=xnxของฟังก์ชั่นคำนวณบางส่วนเพื่อให้ φ n ( k )เป็นจำนวนคำนวณโดยฟังก์ชันคำนวณบางส่วนเข้ารหัสโดย nเมื่อนำไปใช้k (ผลลัพธ์อาจไม่ได้กำหนด)φφn(k)nk

มอร์ฟิซึ่มส์ของเซตตัวเลขคือแผนที่ที่รับรู้ , ซึ่งหมายความว่ามีn N อยู่เช่นนั้นf ( ν A ( k ) ) = ν B ( φ n ( k ) )สำหรับทุกkประสิทธิภาพของν สิ่งนี้ดูซับซ้อน แต่ทั้งหมดบอกว่ามันคือφ n:(A,νA)(B,νB)nยังไม่มีข้อความ(νA(k))=νB(φn(k))kνAφnทำรหัสสิ่งที่ทำกับองค์ประกอบ มันเป็นวิธีทางคณิตศาสตร์ของบอกว่า "โปรแกรมφ nดำเนินการทำงาน "φn

นี่คือมุก: หมวดหมู่ของชุดตัวเลขถูกปิดคาร์ทีเซียน ดังนั้นเราจึงอาจตีความพิมพ์ -calulus ในนั้นและขอให้สิ่งที่ดำเนินการโปรแกรมการดำเนินงาน currying คำตอบคือ: โปรแกรมที่กำหนดโดยทฤษฎีบท smnλ


น่าสนใจ หมวดหมู่นั้นเกี่ยวข้องกับอย่างใกล้ชิดหรือไม่ ν Aดูเหมือนจะกระตุ้น PER PER(A)νA
Chi

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