Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell IO单子在系统中是如何工作的 导入系统。随机 main=do g_Haskell_Io_Monads - Fatal编程技术网

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