モナド
ああ、だんだん、モナドが分からなくなってきた・・・
----
Haskellのdo記法と「<-」は、Concurrent Cleanで一意型を使ったときのletと「=」に似ている?
----
モナドを使うことのメリットは、以下の3つに要約できる?
- 一つの値に複数の状態を混在させられる
- 実行順序を一方向に限定できる
- 実行結果をモナド内に閉じ込められる
で、Cleanの一意型は、以下のような特徴がある。
- 実行順序を一方向に限定できる
- 実行結果を参照透過性を壊さずに取り出すことができる
なので、Cleanでモナドを利用するメリットは、
- 一つの値に複数の状態を混在させられる
という部分だと思うのだけれど、Haskellのモナドは、他の要素も強く一体化していて、どのように切り出せばよいのか(あるいは、切り出す必要がないのか)が分からない。