2

我是 Haskell 的新手,仍在尝试锻炼一些语法/习语。谁能解释我在这段代码中做错了什么?main应该打印出 5 个随机数的列表。这可以在 GHCi 中找到,但不在文件中。我错过了什么?

import System.Random

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

1 回答 1

14

当你编译这个,你得到

约束中的模棱两可的类型变量“a0”....

这是因为在 ghci 中,类型110默认为 Integer,但编译器没有相同的默认规则。

由于您在执行任何其他操作之前先打印它们,因此无法推断出类型。

您需要做的就是添加显式类型签名,例如

main = newStdGen >>= print . take 5 . randomRs (1::Int,10)
于 2013-04-30T21:52:31.560 回答