Hello,
I wonder if this output from 4.08.2 is sane:
$ ./main.exe
IO Monad
[3,4,1,3,8,0,0,1,0,1]
ST Monad
[51130784,51130912,51131040,51131168,51131296,51131424,51131552,51131680,511
31808,51131936]
unsafePerformIO
[4,4,4,4,4,4,4,4,4,4]
Programm is:
module Main(main) where
import IOExts
import ST
import Random
import Monad
main = do
putStrLn "IO Monad"
putIO
putStrLn "ST Monad"
putST
putStrLn "unsafePerformIO"
putUnsafe
rand:: IO Int
rand = getStdRandom (randomR (0,9))
make10:: Monad m => m a -> m [a]
make10 a = sequence (take 10 (repeat a))
putIO:: IO ()
putIO = do
list <- make10 rnd
print list
where
rnd:: IO Int
rnd = rand
putST:: IO ()
putST = do
list <- stToIO (make10 rnd)
print list
where
rnd:: ST s Int
rnd = unsafeIOToST rand
putUnsafe:: IO ()
putUnsafe = do
list <- make10 (return rnd)
print list
where
rnd:: Int
rnd = unsafePerformIO rand
Regards,
Thomas
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs