Part II がカバーしているモナドは、Andy Gill の Monad Template Library を
に加えて、標準の Haskell 型の混合を含みます。この Monad Template Library は
Glasgow Haskell Compiler の階層ライブラリ
Control.Monad 以下に含まれています。
モナド |
計算のタイプ |
>>= の組合せ戦略 |
Identity |
N/A — モナド変換子で利用 |
束縛された関数は入力値に適用される |
Maybe |
結果を返さないかもしれない計算 |
Nothing の入力は Nothing の出力になり、
Just x の入力では x が束縛された関数
の入力となる
|
Error |
失敗あるいは例外を投げられる計算 |
失敗はその失敗についての説明情報を記録する。
束縛は、束縛された関数を実行することなく失敗情報を渡すか、
あるいは、成功したときの値を束縛された関数の入力として使う
|
[] (List) |
可能な結果を複数返す、非決定性計算 |
束縛された関数を入力リストに写像し、結果のリストを連結して、すべての
可能な入力からのすべての結果のリストを得る
|
IO |
I/O を行う計算 |
I/O 動作のならびを束縛順に実行する
|
State |
状態を保持する計算 |
束縛された関数を入力値に適用し、入力された状態に適用される
状態遷移関数を生成する
|
Reader |
共有された環境から読み込みを行う計算 |
束縛された関数は同じ環境を使う入力の値に適用される
|
Writer |
計算する値とは別にデータを書き出す計算 |
書き出されるデータは値とは別に保持される。束縛された関数は入力された
値に適用され、書き出すものは書き出しデータストリームに追加される
|
Cont |
中断および再開が可能な計算 |
束縛された関数は継続連鎖中に挿入される
|