2013-04-30 46 views
2

我是Haskell的新手,仍在努力锻炼一些语法/成语。任何人都可以解释我在这段代码中做错了什么吗? main应打印出5个随机数列表。这可以在GHCi中找到,但不在文件中。我错过了什么?主要功能出错

import System.Random 

main = newStdGen >>= print . take 5 . randomRs (1,10) 
+10

描述问题时,请更具体的不是“它不工作”。它是否编译?如果是这样,它会运行吗?它会产生比您预期的不同的输出吗? – 2013-04-30 21:52:08

回答

14

当你编译这个,你

暧昧类型的约束 变量'A0' ....

这是因为在ghci中的1类型10默认为整数,但编译器不具有相同的默认规则。

由于您在做任何事情之前先打印它们,因此无法推断出类型。

所有你需要做的就是添加一个明确的类型签名,例如

main = newStdGen >>= print . take 5 . randomRs (1::Int,10)