Haskell komitesi neden G / Ç'yi temsil etmek için monadları seçti?


36

Temiz dil kullanan benzersizliği türlerini tamamen işlevsel bir ortamda I / O işlemek için. Neden Haskell komitesi bunun yerine monadlarla birlikte gitti ? Komisyonun araştırdığı ancak aleyhine karar verdiği durumu ele almak için başka öneriler var mıydı?

Not : Monadlar ve diğer bilgisayar yöntemleri arasında kutsal bir savaş aramıyorum. Konuyu sadece komitenin G / Ç ile ilgili seçimlerine göre tutalım.


Yanıtlar:


16

Bir Haskell Tarihine Göre : Sınıfla Tembel Olmak (bkz. Bölüm 7) başlangıçta üç farklı model göz önünde bulundurulmuştur: akışlar , süreklilikler ve "dünyadan geçenler" (Temiz hakkında pek bir şey bilmiyorum, ama temiz gibi ?).

Bölüm 7.2'nin son paragrafı, özgünlük tipi kavramının şu anda geliştirilmediğini göstermektedir:

Bununla birlikte, bu “dünyadan geçen” model, Haskell için hiçbir zaman ciddi bir rakip olmadı, çünkü dünyaya “tek iş parçacıklı” erişim sağlamanın kolay bir yolunu göremedik. (Temiz tasarımcılar bu sorunu “benzersiz türler” kullanarak çözdüler.)

Monad kavramı Haskell'in daha sonraki revizyonlarında (diğer işten tekrar kullanılmış) daha temiz bir kodla sonuçlandığından (süreklilik / akarsulara kıyasla) ortaya çıkmış görünüyor:

Monadik yaklaşım daha önceki modellerde hızla egemen oldu. Tipler daha kompakt ve bilgi vericidir.


10

Gördüğüm en iyi açıklama, Simon Peyton-Jones'un " Garip Ekibinin Mücadele Edilmesi ".

Gazeteden hatırladığım kadarıyla kararda tembellik konusundaki sorunlar büyük rol oynadı. (Temiz varsayılan olarak Haskell gibi tembel olup olmadığından emin değilim.)


5
Temiz de tembel.
Chrisaycock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.