4
我開始學習Haskell,雖然它通常很棒,但類型類系統的一些特殊性在數值聚焦的項目中導致了很多挫折。作爲一個具體的例子,如果我打開ghci中,檢查另外的類型,我得到:Haskell類型類混淆
Prelude> :t (+)
(+) :: Num a => a -> a -> a
加法是超級通用,Num
是最通用的類型類,等等,所以一切纔有意義。但是如果我聲明一些函數是加法的,然後檢查那個函數的類型,類型類會減少到Integer
!
Prelude> let add = (+)
Prelude> :t add
add :: Integer -> Integer -> Integer
那麼...發生了什麼事?