Drkcore

27 05 2012 Haskell Tweet

ApplicativeとMonadの違い

引き続き「すごいHaskellたのしく学ぼう」を読んでいる。

ProductName すごいHaskellたのしく学ぼう!
Miran Lipovača
オーム社 / 2940円 ( 2012-05-23 )


ApplicativeとMonadの違いはbind(>>=)があるかどうかだと思うんだけど

(>>=) = m a -> (a -> m b) -> m b

これは、

モナド値を取って、それに「通常の値を取るがモナド値をとる返す関数」を適用する

わけだ。そしてこれは、Applicativeのススメによると、Applicativeでは条件分岐は実現できず(Monadではできる)ということになるんだと思うわけで、そこら辺の分かりやすい説明が13.4の綱渡りに書かれている。

で、書かれている関数は理解できるんだが、意図しているものがモヤモヤしている。この例の場合の条件分岐はNothingかJust xで型(データコンストラクタ?)が別れるということになるんだろうなぁと思うんだけど、じゃぁMaybe型ってなんなの?

失敗するかもしれないという文脈付きの型って本書では書いてあるけど、モナドから見たら失敗している、失敗してないという2つの状態を表現している型 っていう認識でいいのか?bindはその二つのいずれかに条件分岐できるという。

アプリカティブ値が相互作用できない(モナド値が相互作用できる)てそういうこと?

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021