头部的类型可以是a-> a?

时间:2014-03-29 23:54:25

标签: haskell

以下Gentle Intro to Haskell的摘录暗示头部的类型可以看作a-> a。是我不理解某事或者这是一个错字吗?

可能只是我,但是头部的类型怎么可能是a-> a?

  

表达式或函数的主体类型是最不通用的类型   直觉上,“包含表达式的所有实例”。对于   例如,头部的主要类型是[a] - > a; [b] - > a,a-> a,或甚至a   是正确的类型,但太笼统,而类似的东西   [整数] - >整数太具体了。

1 个答案:

答案 0 :(得分:9)

这是一个错字,我相信他们的意思

head :: b -> a

因为b只是一个与[a]统一的随机类型变量。

因此,为了提高特异性,

head :: [a] -> a
head :: foo -> a
head :: a