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

Eq が何を意味するのか、または何をするのかがわからないので、定義全体が何を意味するのかわかりませんか?

4

3 に答える 3

11

aこれは、定義で使用される型に関する制約です。型クラス[a] -> [(Int,a)]のインスタンスを定義する必要があることを示していますEq。基本的に、Eqインスタンスを持つ型は、等値演算子と不等値演算子をサポートし(==)ます(/=)

型クラスの詳細については、learnyouahaskell.com を参照してください。要するに、型クラスは OOP のインターフェースにいくらか似ています。

于 2012-04-24T13:44:01.257 に答える
5

これは、[a] の要素が Eq 型クラスである必要があることを意味します。つまり、それらが等しいかどうかをテストできる必要があります。

于 2012-04-24T13:43:47.760 に答える
1

前に述べたように、型aの項目はEq型クラスでなければなりません。Eq型クラスは、「==」演算子/関数を使用して、他の型と等しいかどうかを比較できる型を定義します

これは、関数が唯一のパラメーターとして「a」アイテムのリストを取ることを意味します

[a] is a list of types a

(Int, a) ペアのリスト、つまり、タプルの最初の項目が Int で、2 番目の項目が関数に渡されたリストと同じ型である 2 タプルのリストを返します。

(ここでは英語のネイティブ スピーカーではありません。申し訳ありません :) )

于 2012-04-24T13:58:59.640 に答える