Eq a => [a] -> [(Int,a)]
Eq が何を意味するのか、または何をするのかがわからないので、定義全体が何を意味するのかわかりませんか?
a
これは、定義で使用される型に関する制約です。型クラス[a] -> [(Int,a)]
のインスタンスを定義する必要があることを示していますEq
。基本的に、Eq
インスタンスを持つ型は、等値演算子と不等値演算子をサポートし(==)
ます(/=)
。
型クラスの詳細については、learnyouahaskell.com を参照してください。要するに、型クラスは OOP のインターフェースにいくらか似ています。
これは、[a] の要素が Eq 型クラスである必要があることを意味します。つまり、それらが等しいかどうかをテストできる必要があります。
前に述べたように、型aの項目はEq型クラスでなければなりません。Eq型クラスは、「==」演算子/関数を使用して、他の型と等しいかどうかを比較できる型を定義します
これは、関数が唯一のパラメーターとして「a」アイテムのリストを取ることを意味します
[a] is a list of types a
(Int, a) ペアのリスト、つまり、タプルの最初の項目が Int で、2 番目の項目が関数に渡されたリストと同じ型である 2 タプルのリストを返します。
(ここでは英語のネイティブ スピーカーではありません。申し訳ありません :) )