参看下面程序:
> :t head
head :: [a] -> a
这里的a
不是type
(Haskell
中的类型以大写字母开头),而是type variale
,可以代表任一类型,有点类似于其它编程语言的generics
。含有type variable
的函数称之为polymorphic functions
。
现在可以知道为什么type
名字必须以大写字母开头,这是为了与type variable
名字区分开。type variable
必须以小写字母开头。
此外:
You can always tell a type variable from a normal variable by context, because the languages of types and functions are separate: type variables live in type signatures, and regular variables live in normal expressions.
type variable
存在于type signature
中,而regular variable
则存在于正常的表达式中。