为了测试Haskell上的type inference
我在下面用pointfree
样式编写了简单的函数别名,然后尝试将它们的源文件加载到GHCi 7.8.3
。为什么它会因add'
和compare'
而被打破?
id' = id
GHCi> :t id'
GHCi> id' :: a -> a
add' = (+)
GHCi> :t add'
GHCi> add' :: Integer -> Integer -> Integer
compare' = compare
GHCi> type variable is ambiguous
如果我直接在GHCi
上输入它们会很好。
GHCi> let add' = (+)
GHCi> let compare' = compare
或将源代码更改为pointful
样式,例如
add' x y = x + y
compare' x y = compare x y
解决方案
将指令{-# LANGUAGE NoMonomorphismRestriction #-}
添加到受影响的源文件中。