2006-10-18から1日間の記事一覧

foldl と foldr

定義をド忘れしてた。 foldl :: (a -> b -> a) -> a -> [b] -> a foldl f z [x1, x2, ..., xn] == f (.. (f (f z x1) x2)..) xn == (..((z `f` x1) `f` x2)..) `f` xn foldr :: (a -> b -> b) -> b -> [a] -> b foldr f z [x1, x2, ..., xn] == f x1 (f x2 .…

「モナドのすべて」読み中

モナドのすべてとりあえず第一部を読んだ。最後の節、「Haskell におけるモナドのサポート」がなかなか重い。 メモ。 do記法はあらゆるモナドに適用できる。 でもあくまで、モナド計算を命令型っぽく書くための syntax sugarである。 doの中でパターンマッチ…

bind

>>= を、(>>= f) という、右辺を部分適用させたセクション単位で考えると見やすいかもしれない。 f :: a -> m b ならば (>>= f) :: m a -> m b >>= を、上のように、「(a -> m b) な関数に被せて (m a -> m b) という関数を作る仕組み」だと考えるんである。…