18

Num型が型クラスのインスタンスを持つには、型クラスのインスタンスが必要であることEqを知っていますShow

class (Eq a, Show a) => Num a

Eqではなく、なぜそれが必要なのか疑問に思っていOrdます。Eq数値型が にあるのに にないのは理にかなっていOrdますか?

4

2 に答える 2

35

たとえば、複素数は、加算、減算、乗算、および等しいかどうかのテストが可能ですが、順序付けはできません。Complex aベースのData.Complexから参照してください。

于 2013-02-04T16:08:48.413 に答える
22

EqとのShow制約も広く誤機能と見なされていたことに注意してください。たとえば、Num関数を含むものに対して完全に有効なインスタンスを防ぎます。GHC の最新バージョンでは、これらの制約も削除され、Numスーパークラスの制約がまったくなくなりました。

于 2013-02-04T16:23:29.087 に答える