スーパークラス/サブクラス

今日もメモ程度。

値の大小関係を表すには Ord クラス。「入門Haskell」によればOrd クラスの定義は次のようである,らしい。

class Eq a => Ord a where
  (>) :: a -> a -> Bool
  (<) :: a -> a -> Bool
  (>=) :: a -> a -> Bool
  (<=) :: a -> a -> Bool
  compare :: a -> a -> Ordering
  max :: a -> a -> a
  min :: a -> a -> a

大小関係を判定するには等しいか否かを判定できなければならない,というわけで Eq a => Ord a となっている。このとき,Eq は Ord のスーパークラスであるといい,逆に Ord は Eq のサブクラスであるという。
関数の型のときにでてきた context みたいなものか。

ところで,Ord クラスのインスタンスに Bool も含まれてるんだけど,これってどんなときに使うんだろう。

Prelude> True < False
False
Prelude> True > False
True

True は False より大きいとか言われても,何それ。

「スーパークラス/サブクラス」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください