【发布时间】:2021-05-12 04:48:15
【问题描述】:
给定一个像negate 这样的函数,它具有类型签名:
negate :: Num a => a -> a
我将其描述为a 是Num 上下文中的类型(如果您认为我错了,请纠正我)。
但我不完全确定如何描述类似 last 的东西,它具有类型签名:
last :: [a] -> a
我的猜测是它不是特定类型的,它需要一个列表并产生与列表相同类型的单个值。这是正确的思考方式吗?
【问题讨论】:
-
Num a是“约束”,Num是“类型类”/“typeclass”,a -> a是“参数多态类型”,a是“类型变量”("parametrically-polymorphic" 中的“参数”)。[b] -> b是参数多态类型,[b]是参数多态类型,b是类型变量。
标签: function haskell types type-signature haskell-prelude