คำถามติดแท็ก curry-howard

10
อะไรคือความเท่าเทียมที่น่าสนใจที่สุดที่เกิดจาก Curry-Howard Isomorphism?
ฉันได้พบกับCurry-Howard Isomorphismในช่วงชีวิตการเขียนโปรแกรมของฉันค่อนข้างช้าและบางทีสิ่งนี้อาจทำให้ฉันรู้สึกทึ่งกับมันมาก มันหมายความว่าสำหรับทุกแนวคิดการเขียนโปรแกรมมีอะนาล็อกที่แม่นยำในตรรกะที่เป็นทางการและในทางกลับกัน นี่คือรายการ "พื้นฐาน" ของการเปรียบเทียบดังกล่าวที่อยู่เหนือหัวของฉัน: program/definition | proof type/declaration | proposition inhabited type | theorem/lemma function | implication function argument | hypothesis/antecedent function result | conclusion/consequent function application | modus ponens recursion | induction identity function | tautology non-terminating function | absurdity/contradiction tuple | conjunction (and) disjoint union | …

6
ฟังก์ชันไร้สาระใน Data.Void มีประโยชน์สำหรับอะไร?
absurdฟังก์ชั่นในData.Voidมีลายเซ็นต่อไปนี้ซึ่งVoidเป็นชนิดที่ไม่มีใครอยู่มีเหตุผลส่งออกโดยแพคเกจที่: -- | Since 'Void' values logically don't exist, this witnesses the logical -- reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a ⊥ → aฉันจะรู้ตรรกะพอที่จะรับข้อสังเกตของเอกสารที่ตรงนี้โดยข้อเสนอตามที่ประเภทจดหมายสูตรที่ถูกต้อง สิ่งที่ฉันงงงวยและสงสัยคือ: ฟังก์ชันนี้มีประโยชน์ในการเขียนโปรแกรมประเภทใดบ้าง ฉันคิดว่ามันอาจจะมีประโยชน์ในบางกรณีเนื่องจากเป็นวิธีที่ปลอดภัยในการจัดการกับกรณีที่ "ไม่สามารถเกิดขึ้น" ได้อย่างละเอียดถี่ถ้วน แต่ฉันไม่รู้เพียงพอเกี่ยวกับการใช้ Curry-Howard ในทางปฏิบัติเพื่อบอกว่าแนวคิดนั้นอยู่บน ถูกต้องเลย แก้ไข: ตัวอย่างโดยเฉพาะอย่างยิ่งใน Haskell แต่ถ้าใครต้องการใช้ภาษาที่พิมพ์ขึ้นเองฉันจะไม่บ่น ...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.