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

我不知道 Eq 是什么意思,所以我不知道整个定义是什么意思?

4

3 回答 3

11

a这是对定义中使用的类型的约束[a] -> [(Int,a)]:它说它必须为类型类定义一个实例Eq。基本上,具有Eq实例的类型支持相等和不等运算符,(==)并且(/=).

有关类型类的更多信息,请访问learnyouahaskell.com。在 nuce 中,类型类有点类似于 OOP 的接口。

于 2012-04-24T13:44:01.257 回答
5

这意味着 [a] 中的元素必须是 Eq 类型类,这意味着它们必须是可测试的相等性。

于 2012-04-24T13:43:47.760 回答
1

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

这意味着您的函数将“a”项列表作为其唯一参数

[a] is a list of types a

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

(这里不是以英语为母语的人,对不起:))

于 2012-04-24T13:58:59.640 回答