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

Reply via email to