考虑以下代码,它应该打印出随机数:
import System.Random.Mersenne
main =
do g <- (newMTGen Nothing)
xs <- (randoms g) :: IO [Double]
mapM_ print xs
运行时,我得到了一个分段错误。这并不奇怪,因为函数 'randoms' 生成了一个无限列表。假设我想要打印出 xs 的前十个值,我应该怎么做?xs 的类型是 IO [Double],我认为我需要一个类型为 [IO Double] 的变量。有哪些运算符可以在这两者之间进行转换。
IO [Double] -> IO [IO Double]
... 除非你使用unsafePerformIO
。 - Thomas Eding