4
我开始学习Haskell,虽然它通常很棒,但类型类系统的一些特殊性在数值聚焦的项目中导致了很多挫折。作为一个具体的例子,如果我打开ghci中,检查另外的类型,我得到:Haskell类型类混淆
Prelude> :t (+)
(+) :: Num a => a -> a -> a
加法是超级通用,Num
是最通用的类型类,等等,所以一切才有意义。但是如果我声明一些函数是加法的,然后检查那个函数的类型,类型类会减少到Integer
!
Prelude> let add = (+)
Prelude> :t add
add :: Integer -> Integer -> Integer
那么...发生了什么事?