引き続き「すごいHaskellたのしく学ぼう」を読んでいる。
ApplicativeとMonadの違いはbind(>>=)があるかどうかだと思うんだけど
(>>=) = m a -> (a -> m b) -> m b
これは、
モナド値を取って、それに「通常の値を取るがモナド値をとる返す関数」を適用する
わけだ。そしてこれは、Applicativeのススメによると、Applicativeでは条件分岐は実現できず(Monadではできる)ということになるんだと思うわけで、そこら辺の分かりやすい説明が13.4の綱渡りに書かれている。
で、書かれている関数は理解できるんだが、意図しているものがモヤモヤしている。この例の場合の条件分岐はNothingかJust xで型(データコンストラクタ?)が別れるということになるんだろうなぁと思うんだけど、じゃぁMaybe型ってなんなの?
失敗するかもしれないという文脈付きの型って本書では書いてあるけど、モナドから見たら失敗している、失敗してないという2つの状態を表現している型 っていう認識でいいのか?bindはその二つのいずれかに条件分岐できるという。
アプリカティブ値が相互作用できない(モナド値が相互作用できる)てそういうこと?