Num
型が型クラスのインスタンスを持つには、型クラスのインスタンスが必要であることEq
を知っていますShow
class (Eq a, Show a) => Num a
Eq
ではなく、なぜそれが必要なのか疑問に思っていOrd
ます。Eq
数値型が にあるのに にないのは理にかなっていOrd
ますか?
たとえば、複素数は、加算、減算、乗算、および等しいかどうかのテストが可能ですが、順序付けはできません。Complex a
ベースのData.Complexから参照してください。
Eq
とのShow
制約も広く誤機能と見なされていたことに注意してください。たとえば、Num
関数を含むものに対して完全に有効なインスタンスを防ぎます。GHC の最新バージョンでは、これらの制約も削除され、Num
スーパークラスの制約がまったくなくなりました。