这个Haskell定义的含义是什么?

3
Eq a => [a] -> [(Int,a)]

我不知道“Eq”是什么意思或者有什么作用,因此我不知道整个定义的含义。

3个回答

11
这是定义 [a] -> [(Int,a)] 中使用的类型 a 的限制条件: 它要求必须为 Eq 类型类定义一个实例。基本上,具有 Eq 实例的类型支持相等和不相等的操作符,(==)(/=)
更多关于类型类的信息,请参见 learnyouahaskell.com 。简单来说,类型类有点类似于面向对象编程中的接口。

5
这意味着 [a] 中的元素必须是 Eq 类型类,也就是说它们必须可以进行相等性测试。

2
可比较性不等同于相等性。Ord 更为严格。 - Don Stewart

1

如前所述,类型为a的项目必须属于Eq类型类。 Eq类型类定义了可以使用'=='运算符/函数与其他类型进行比较相等的类型。

这意味着您的函数仅以列表形式接受'a'项目作为其唯一参数。

[a] is a list of types a

返回一个(Int, a)对的列表,即一个由2元组组成的列表,其中元组中的第一项是Int类型,第二项与传递给函数的列表相同。

(我不是母语为英语的人,抱歉:))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接