เหตุใดคณะกรรมการ Haskell จึงเลือกพระเพื่อเป็นตัวแทน I / O


36

สะอาดภาษาใช้ประเภทเอกลักษณ์ในการจัดการ I / O ในการตั้งค่าการทำงานได้อย่างหมดจด ไม่คณะกรรมการ Haskell ไปกับทำไมmonadsแทน? มีข้อเสนออื่น ๆ สำหรับการจัดการสถานะที่คณะกรรมการตรวจสอบ แต่ตัดสินใจกับ?

หมายเหตุ : ฉันไม่ได้มองหาสงครามศักดิ์สิทธิ์ระหว่างพระและคอมพิวเตอร์ในรูปแบบอื่น ๆ มาติดตามเรื่องการเลือกของคณะกรรมการเกี่ยวกับ I / O


คำตอบ:


16

ตามประวัติศาสตร์ของ Haskell: ขี้เกียจกับ Class (ดูมาตรา 7) สามรูปแบบที่แตกต่างกันได้รับการพิจารณาในขั้นแรก: ลำธาร , และ"โลกผ่าน" (ผมไม่ทราบว่ามากเกี่ยวกับการทำความสะอาด แต่เสียงเช่นนี้เป็นวิธีที่สะอาด ?)

ย่อหน้าสุดท้ายของมาตรา 7.2 ระบุว่าแนวคิดประเภทความเป็นเอกลักษณ์ไม่ได้รับการพัฒนาในเวลานี้:

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

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

วิธีการ monadic ครอบงำรุ่นก่อนหน้าอย่างรวดเร็ว ประเภทมีขนาดกะทัดรัดและมีข้อมูลมากขึ้น


10

คำอธิบายที่ดีที่สุดที่ฉันเคยเห็นคือ Simon Peyton-Jones '" Tackling the Awkward Squad ."

จากสิ่งที่ฉันจำได้จากบทความประเด็นเกี่ยวกับความขี้เกียจเป็นส่วนสำคัญในการตัดสินใจ (ฉันไม่แน่ใจว่า Clean เป็นคนขี้เกียจโดยค่าเริ่มต้นเช่นเดียวกับ Haskell)


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