関数型プログラミング言語Haskell Part8
at TECH
46:デフォルトの名無しさん
07/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がダメなのはなんでなんだぜ?
で、
URLリンク(www.sampou.org)
読んでたらなんとなく分かった気がしたんだけど要するにIOモナドは1方向モナドで、値が取り出せないし、
IOモナド使ってる関数は返り値の型が絶対IO()とかになるから参照透明じゃないのが他の関数まで波及しないよって意味なのか?
じゃMaybeとかStateとかは使っても参照透明なままなのか?
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5326日前に更新/201 KB
担当:undef