我是Haskell的新手,仍在努力练习一些语法/习语。谁能解释一下我在这段代码中做错了什么? main
应该打印出5个随机数的列表。这可以在GHCi中找到,但不能在文件中找到。我错过了什么?
import System.Random
main = newStdGen >>= print . take 5 . randomRs (1,10)
答案 0 :(得分:14)
编译时,你得到
约束中的模糊类型变量`a0' ....
这是因为在ghci中,1
和10
的类型默认为Integer,但编译器没有相同的默认规则。
由于您在执行任何其他操作之前打印它们,因此无法推断出类型。
您需要做的就是添加一个显式类型签名,例如
main = newStdGen >>= print . take 5 . randomRs (1::Int,10)