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

jhe*_*dus 5 haskell

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

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

表达式或函数的主体类型是最不通用的类型,直观地说,"包含表达式的所有实例".例如,头部的主要类型是[a] - > a; [b] - > a,a-> a,或者甚至是一个正确的类型,但是太笼统,而像[Integer] - > Integer这样的东西太具体了.

Dan*_*zer 9

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

head :: b -> a
Run Code Online (Sandbox Code Playgroud)

因为b它只是一个可以统一的随机类型变量[a].

所以为了增加特异性,

head :: [a] -> a
head :: foo -> a
head :: a
Run Code Online (Sandbox Code Playgroud)

  • @SassaNF`undefined`也是.但这没什么兴趣.每当有人使用像"证据"这样的词时,他们往往会忽略Haskell的"丑陋"部分,例如非终止和`seq` ;-) (2认同)