基本的例子
λ> :t 1
1 :: Num t => t
λ> :t pi
pi::Floating a => a
在上面的示例中,类型检查器为两个常量推断出类型类而不是具体类型。在 Haskell 中,Num
类是最通用的数字类(因为它包含整数和实数),但是 pi
必须属于更专业的类,因为它具有非零小数部分。
list0 :: [Integer]
list0 = [1, 2, 3]
list1 :: [Double]
list1 = [1, 2, pi]
上述具体类型由 GHC 推断。像 list0 :: Num a => [a]
这样的更普遍的类型会起作用,但是也会更难保存(例如,如果将一个 Double
强加到 Num
s 列表中),由于上面显示的警告。