ปริมาณสากล / การดำรงอยู่?


11

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

ฉันไม่เข้าใจว่าทำไม CoC มีทั้งแลมบ์ดาและโดยสังเขป

( x : . B )

(λx:A.B)
(x:A.B)

สำหรับฉันแล้วแลมบ์ดาบอกให้รู้ว่าระบบย่อยที่ส่งผ่านด้วยตนเอง ในคำอื่น ๆ ที่ต่อไปนี้

(x:.λa:x.a)

อาจถูกแทนที่ด้วย

(λx:.λa:x.a)

ถ้ามันถูกนำไปใช้กับประเภทที่ถูกใช้ครั้งแรก

ฉันกำลังคิดถึงอะไร มีเอกสารหรือบล็อกหรือบทความใดบ้างที่ให้อ่านซึ่งอาจช่วยฉันได้

ขอบคุณ

คำตอบ:


12

ช่วยให้จำได้ว่า (หรือΠตามที่คุณเห็น) เป็นประเภท มัน generalizing → ดังนั้นในขณะที่มันทำให้รู้สึกดีที่จะพูด( λ x : . M ) Nก็ไม่ได้ทำให้ความรู้สึกที่จะพูด( x : . M ) Nเพราะ . . เป็นเพียงประเภท คุณจะไม่พูด( B ) N becaues ไม่ได้สำหรับการคำนวณต่อ-SE ก็มีการΠ(λx:A.M) N(x:A.M) N...(AB) ยังไม่มีข้อความแง่แลมบ์ดาประเภทซึ่งสามารถนำมาประยุกต์ใช้เช่นนี้

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

สองโปรแกรมที่คุณเขียนมีความตั้งใจแตกต่างกันมากและรายการแรกไม่มีการพิมพ์ผิด มันไม่ได้ทำให้ความรู้สึกที่จะพูดเพราะต้องข้อโต้แย้งของทั้งสองตามประเภทซึ่งหมายความว่าถ้าx : Bคือการได้รับอย่างดีพิมพ์เราจะต้องมีB : * อย่างไรก็ตามλ x xไม่ได้ชนิดก็สามารถเท่านั้นที่เคยได้รับการกำหนดประเภทของรูปแบบx : ไม่เคยx:A. λx. xx:A.BB:* * * *λx.xx:A.B* * * *. คนที่สองในมืออื่น ๆ ที่เกือบจะ (ฉันคิดว่าคุณหมายถึงการกลับไม่x ) เป็นฟังก์ชั่นและจะได้รับใช้ประเภทสอง sax


ใช่ฉันหมายถึงการกลับ a
oconnor0

@ oconnor0 ไม่ที่ทำให้ความรู้สึกบางอย่าง :)
แดเนียล Gratzer

ไม่แน่นอน ฉันยังคงสับสนเล็กน้อย ฉันอาจต้องคิดเพิ่มเติมเกี่ยวกับเรื่องนี้ ผมเปลี่ยนโปรแกรมตัวอย่างทั้งสองจะกลับมากกว่าxตั้งแต่ผมพยายามที่จะใช้ฉันวันที่ :)axผมd
oconnor0

ฉันคิดว่าในบางระดับฉันต้องการทำข้อตกลงและแบบในสิ่งเดียวกัน ระหว่างคำตอบของคุณกับcs.stackexchange.com/questions/49531/…ฉันคิดว่าฉันเห็นว่าฉันไปไหนมาไหน ฉันต้องการทำสิ่งนี้ในระบบ normalizing อย่างยิ่ง
oconnor0

5

โปรดทราบว่าประเภทที่มีอยู่และเป็นสากลนั้นค่อนข้างแตกต่างกัน มันเป็นตรรกะที่สร้างสรรค์ไม่ตรรกะคลาสสิกและในตรรกะที่สร้างสรรค์และจะไม่ได้เป็นที่เกี่ยวข้องกับพวกเขาอยู่ในตรรกะคลาสสิก

เป็นชนิดของโปรแกรมที่ได้รับวัตถุชนิดนั้นและกลับวัตถุของการพิมพ์ B ( x ) สิ่งที่สำคัญที่นี่คือประเภท B ( x )ขึ้นอยู่บน xและไม่ได้เป็นเหมือนกันสำหรับทุกx มันอาจแตกต่างกันไปขึ้นอยู่กับว่า xคืออะไร สำหรับหนึ่งอินพุต xเราอาจส่งออกจำนวนเต็ม อีกอันเราอาจเอาท์พุทจำนวนจริง สำหรับอีกอันหนึ่งเราอาจเอาท์พุทฟังก์ชันเหนือจำนวนจริง ถ้า B ( x )x:A.B(x)AB(x)B(x) xxxxB(x)ไม่แตกต่างกันกับแล้วคุณสามารถใช้Bในสถานที่ซึ่งเป็นประเภทของการทำงานจากไปBxABAB

เป็นเวอร์ชันที่ขึ้นต่อกันของการแยก (สร้างสรรค์) คุณสามารถคิดสร้างสรรค์ร้าวฉานBสองประเภทและ Bเป็นสหภาพเคลื่อนของและB x : B ( x )เป็นสหภาพเคลื่อนของคอลเลกชันของประเภท B ( x ) ดัชนีโดย x : ความจริงที่ว่าประเภท B (x:A.B(x)ABABABx:A.B(x)B(x)x:A van แตกต่างกันไปขึ้นอยู่กับค่าของ x : A ทำให้เป็นชนิดที่ขึ้นต่อกัน เปรียบเทียบกับกรณีที่ Bไม่ขึ้นอยู่กับ x : :x : . เราจะมีหนึ่งสำเนาของเดียวกัน Bสำหรับแต่ละ x : นี่คือ isomorphic เพื่อ × BB(x)x:ABx:Ax:A.BBx:AA×B

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

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


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