【发布时间】:2014-10-31 06:42:44
【问题描述】:
我开始学习 Haskell,虽然它通常很棒,但类型类系统的一些特殊性在专注于数字的项目中导致了很多挫败感。作为一个具体的例子,如果我打开 ghci 并检查添加的类型,我会得到:
Prelude> :t (+)
(+) :: Num a => a -> a -> a
Addition 是超通用的,Num 是最通用的类型类,等等,所以一切都有意义。但是,如果我声明某个函数是要添加的,然后检查 that 函数的类型,则类型类会减少到 Integer!
Prelude> let add = (+)
Prelude> :t add
add :: Integer -> Integer -> Integer
那么……这是怎么回事?
【问题讨论】: