描述非类型特定的Haskell函数的类型签名的方法是什么?

给定一个像 的函数negate,它具有类型签名:

negate :: Num a => a -> a

我将其描述为a上下文中的类型Num(如果您认为我错了,请纠正我)。

但我不完全确定如何描述last具有类型签名的类似:

last :: [a] -> a

我的猜测是说它不是特定于类型的,并且它需要一个列表并生成一个与列表相同类型的值。这是正确的思考方式吗?

回答

首先,a是不是在的上下文类型Num,而是一个具有类型的Num实例。

Num a => a -> a是受约束的多态类型,而[a] -> a是不受约束的多态类型,或简称为多态类型。在不受约束的情况下,a可以是任何类型;在受约束的情况下,它必须是遵守给定约束的类型。


以上是描述非类型特定的Haskell函数的类型签名的方法是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>