2011年12月14日水曜日

Monad

朝、親に電車代を交渉し忘れて rpscala にいけないという・・・・・

今日はMonad。

Monad

Monadが何たるかは

モナドは象だ

を読みましょう!(まるなげ

モナドなんて高階関数を持ってて結合可能なコンテナぐらいの認識でいいのです!(ぼうろん

ここではScalazでMonadに関連する関数を紹介します。

Monadのインスタンスを直接定義するか、BindとPureのインスタンスが定義されていればimplicit parameterにMonadのインスタンスが供給されます。


getOrElseM

値Mに包まれたOption[A]がSomeの場合、値を返し、Noneの場合呼び出し側を返します。


ifM

trueの場合とfalseの場合で値を振り分けます。


replicateM

型パラメータを1つとる型と繰り返す回数を渡し、包まれた値を連結します。


foldLeftM, foldRightM

普通のfoldと違い、包まれた値を返す関数を渡します。


Scalaではあるクラスを実装するのではなく、flatMapとmapさえ実装されていればfor式が使えちゃう。
for式はflatMapがネストしたら使えばいいんじゃなイカ?

0 件のコメント:

コメントを投稿