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