所以我对Haskell来说真的很新,但是我正在玩点免费符号并遇到了这个问题。我在控制台:
> let c = (.)negate
> :t c
> (a -> Integer) -> a -> Integer -> a
但是否定取一个数字,为什么它被约束为一个整数类型?
答案 0 :(得分:7)
这是GHCi中扩展违约规则的另一个案例。做:set -XNoMonomorphismRestriction
或只做
> :set +m -- multiline input in GHCi
> let c :: (Num a) => (b -> a) -> b -> a -> b
| c = (.) negate
|
> :t c
Num a => (b -> a) -> b -> a -> b