6
Eq typeclassの実装はどのように機能しますか? IntやFloatなどの実装を簡単に記述できます。しかし、可能性のあるすべての値コンストラクタに対してパターンマッチのようなことをする必要があるので、どのようにすべてのユーザタイプのキャッチオールが行われますか?私はこれを行うための構文を認識していない。Eq typeclassはユーザー定義型に対してどのように実装されていますか?
data Person = Person { firstName :: String
, lastName :: String
, age :: Int
} deriving (Eq)
':GHCiの中-ddump-deriv'を設定しすぎ –
ああ、それはインスタンスコードを生成しますので、具体的にはタイプPerson用です。私は、すでに書かれたコードが使用されているという誤った印象のもとにいました。しかし、インスタンスコードを生成する方法をどのように知っていますか?それはハスケル自体に焼かれていますか? – user782220
@ user782220基本的にはい、それは焼き尽くされています。そのため、特定の型クラスでのみ 'deriving'を使うことができます。どの型でも動作する可能性のあるHaskellコードはありませんので、型固有のロジックが必要です(そのため、等価は多型関数ではなく型クラス関数です)。 GHCには "明白な" Eq'インスタンスを生成するためのロジックが含まれています。 – Ben