モナド変換子
• 2つのモナドを合成するためのもの
• 例えばStateモナドの場合:
– StateT s m a
• モナド変換子版Stateモナド
• State s a と比べて、mというパラメータが追加
• mに合成したいモナドを代入
– StateT s IO a
• IOモナドを内包したStateモナド
• IOモナドの操作とStateモナドの操作が両方できる
※ Alternativeクラスについて
• m1 <|> m2 なる演算子が定義されている
• m1が失敗したとき、m2の結果
• Alternativeの任意のンスタンスに対して
– many p – pを失敗するまで繰り返し
– some p – pを失敗するまで1回以上繰り返し
– optional p – p が失敗したらNothing成功したら
Just aを返す
– これらを定義することができる