Haskell IO单子在系统中是如何工作的 导入系统。随机 main=do g
您无法从Haskell IO单子在系统中是如何工作的 导入系统。随机 main=do g,haskell,io,monads,Haskell,Io,Monads,您无法从IO中逃逸,但在do块中,您实际上并没有逃逸 松散地说:当你写g时,使用让a=而不是a检查g的类型g但为什么第2行(在do中)不编译?第2行不编译,因为take 5(randoms g:[Double])不返回IO(或一元)值。如果您将行更改为让a=take 5(randoms g::[Double]),那么它应该可以编译。 import System.Random main = do g <- newStdGen a <-take 5 (randoms g ::
IO
中逃逸,但在do
块中,您实际上并没有逃逸
松散地说:当你写
g时,使用让a=
而不是a检查g
的类型<代码>g但为什么第2行(在do中)不编译?第2行不编译,因为take 5(randoms g:[Double])
不返回IO
(或一元)值。如果您将行更改为让a=take 5(randoms g::[Double])
,那么它应该可以编译。
import System.Random
main = do
g <- newStdGen
a <-take 5 (randoms g :: [Double])
return ()
import System.Random
main = do
g <- newStdGen
let a = take 5 (randoms g :: [Double])
print a