練習問題 4.1.2

以下のインスタンス宣言を完成せよ.

instance Ord a => Ord [a] where
  ... 
第2章で具体的な型
[Char]
の順序を考えたことを思い出してもらいたい.文字列の順序は辞書順である.リストに共通する
 <= 
の定義も辞書順である.



instance Ord a => Ord [a] where
  []     <= _    = True
  _      <= []   = False
  (x:xs) <= (y:ys) 
     | x == y    = xs <= ys
     | x <= y    = True
     | otherwise = False