朝、親に電車代を交渉し忘れて 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 件のコメント:
コメントを投稿