- 46 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:22:54 ]
- ちょっとお前ら教えてくれよ
>>33の続きなんだけど @ genNRandom :: Int -> IO () genNRandom n = do g <- getStdGen let ns = take n (randoms g) putStr $ show (ns :: [Int]) A genNRandom :: Int -> String genNRandom n = do g <- getStdGen let ns = take n (randoms g) show (ns :: [Int]) B genNRandom :: Int -> [Int] genNRandom n = do g <- getStdGen take n (randoms g) @はコンパイル通るけどAとBがダメなのはなんでなんだぜ? で、 ttp://www.sampou.org/haskell/a-a-monads/html/laws.html#nowayout 読んでたらなんとなく分かった気がしたんだけど要するにIOモナドは1方向モナドで、値が取り出せないし、 IOモナド使ってる関数は返り値の型が絶対IO()とかになるから参照透明じゃないのが他の関数まで波及しないよって意味なのか? じゃMaybeとかStateとかは使っても参照透明なままなのか?
|

|