今日もメモ程度。
値の大小関係を表すには 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 より大きいとか言われても,何それ。
True,Falseに大小関係があるとは知りませんでした。ソートで使いたいからかな?