Bahasa Bersih menggunakan tipe keunikan untuk menangani I / O dalam pengaturan yang berfungsi murni. Mengapa komite Haskell pergi dengan monad sebagai gantinya? Apakah ada proposal lain untuk menangani keadaan yang diselidiki komite tetapi diputuskan menentang?
Catatan : Saya tidak mencari perang suci antara monad dan bentuk komputasi lainnya. Mari kita bahas topik ini hanya untuk pilihan komite tentang I / O.
functional-programming
history
haskell
chrisaycock
sumber
sumber
Jawaban:
Menurut A History of Haskell: Being Lazy With Class (lihat bagian 7) tiga model yang berbeda dipertimbangkan pada awalnya: stream , continuations , dan "passing dunia" (Saya tidak tahu banyak tentang Clean, tapi sepertinya ini adalah cara Clean) ?).
Paragraf terakhir dari bagian 7.2 menunjukkan bahwa konsep tipe keunikan tidak dikembangkan saat ini:
Konsep monads tampaknya telah diperkenalkan (digunakan kembali dari karya lain) dalam revisi Haskell kemudian karena menghasilkan kode yang lebih bersih (dibandingkan dengan kelanjutan / aliran):
sumber
Penjelasan terbaik yang pernah saya lihat adalah Simon Peyton-Jones '" Menangani Pasukan Awkward ."
Dari apa yang saya ingat dari koran, masalah-masalah seputar kemalasan memainkan peran besar dalam keputusan itu. (Saya tidak yakin apakah Clean malas secara default dengan cara yang sama seperti Haskell.)
sumber