Haskell委員会がI / Oを表すモナドを選んだのはなぜですか?


36

クリーン言語が使用一意の種類を純粋に機能的な設定でI / Oを処理します。Haskell委員会がなぜモナドを使用したのですか?委員会が調査したが、反対した決定した状態を処理するための他の提案がありましたか?

:私は、モナドと他の形式のコンピューティングとの間の聖戦を探していません。I / Oに関する委員会の選択だけにトピックを保ちましょう。


回答:


16

よるとハスケルの歴史:ビーイングレイジー持つクラス:3種類のモデルが最初に考えられた(第7章参照)ストリーム継続とは、「世界は渡して」これはクリーンな方法であるように、私はクリーンについてあまり知らない(が、それが聞こえます?)。

セクション7.2の最後の段落は、現時点では一意性タイプの概念が開発されていないことを示しています。

しかし、この「世界を通過する」モデルは、Haskellにとって深刻な競争相手ではありませんでした。(クリーンデザイナーは、最終的に「一意の種類」を使用してこの問題を解決しました)

モナドの概念は、Haskellの後のリビジョンで導入された(他の作品から再利用された)ように見える(継続/ストリームと比較して)よりクリーンなコードになったため:

モナドのアプローチは以前のモデルを急速に支配しました。タイプはよりコンパクトで、より有益です。


10

私が見た中で最も良い説明は、サイモン・ペイトン・ジョーンズの「厄介な部隊への取り組み」です。

私が論文から覚えていることから、怠に関する問題が決定に大きな役割を果たしました。(CleanがデフォルトでHaskellと同じように遅延するかどうかはわかりません。)


5
クリーンも怠け者です。
クリスアイコック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.