RHG

本日はRHGふつける読書会にきています。
今回のモナドからです。



以下メモ
x >>= f = concatMap f xs
[x] >>= f
concatMap f [x] -> map [f x]


[x] >>= f
concatMap f [x]
concat (map f [x])
[f x] -> f [(1,2)] -> []

IOモナドのところで評価と実行は違うということが話題になりました。

f:: (x,w) -> (b,w)
f:: a -> (w -> (b,w))
main = do <-getStdGen
	     let ns = take 3 (randoms g)
	     print (ns::[Int])

は次の二つのように書き換えられる

getStdGen >>= \g -> print (take 3 (radoms g))
getStddGen >>= rndoms >>> take 3 >>> put


ポイントフリースタイルの書き換え

f . g = \ x -> (g x)
f . g = \ x -> g (f x)