MonadはIOとdo記法のためにあると説明した方がわかりやすくね?
当初、@SubaruGさんの
「Haskell は言語組み込みで Monad を(正確には (>>=) や (>>) や fail を)特別扱いしている.」
という発言の意図がわからなかったので、流れを追っかけたついでにまとめました。
XENO
@xenophobia__
二項演算子や関数を全部Num a => Maybe aみたいな型の間の演算にして、 runCalculus $ (a+b)*c/d で走らせて、計算がうまくいったかは最後で一度だけパターンマッチングで確認、駄目だった場合の例外処理も書く……か。さすがにめんどいな。
2012-11-27 20:55:10
普通のC++使い、銀天すばる
@SubaruG
fail は Applicative には存在しませんゆえ RT @decimalbloat: それMonadじゃなくてApplicativeで十分じゃね?
2012-11-27 21:40:20
普通のC++使い、銀天すばる
@SubaruG
突っ込みどころとしては,むしろ「 m a -> m a -> m a ではなく a -> a -> m a の方が Haskell 的では?」の方だと思う
2012-11-27 21:41:01
XENO
@xenophobia__
モナディック(failure)さんすう。9/0は(failure DivideByZero) http://t.co/jMzZpSJZ #Haskell
2012-11-27 21:44:39
普通のC++使い、銀天すばる
@SubaruG
fail は Monad の重要な構成要素なんだけど( do 式中の <- によるパターンマッチに失敗した場合に呼ばれる, Maybe とか [] モナドで特に有用),何故か影が薄い.
2012-11-27 21:48:07