为什么有时在Haskell中定义一个值会改变它的类型呢?

时间:2015-05-07 15:35:55

标签: haskell

假设我们有

mylist = [1..5]

很清楚

[1..5] :: (Num t, Enum t) => [t]

但为什么会这样呢

mylist :: [Integer]

而不是

mylist :: (Num t, Enum t) => [t]

在GHCi? (至少如:t所述)

1 个答案:

答案 0 :(得分:4)

由于dreaded monomorphism restriction,此特定示例默认为Integer

顺便说一下,GHCi中再次出现:因为ghc-7.8默认使用-XNoMonomorphismRestriction