プログラミング Haskell 第3章 型とクラス その3
第3章最後の基本クラスの紹介部分
- クラス = 「共通の"メソッド"を提供する型の集合」
- メソッド = 「多重定義された関数」
- そんなに難しく構える必要はなかったみたいですね
- クラスは型の型、メソッドは「このクラスの型ではこの名前の関数が定義されてないといけませんよ」という約束のある関数
- Eq - 同値クラス
- '==', '!=' がメソッド
- Ord - 順序クラス
- '<', '<=', '>', '>=', min, max がメソッド
- さらに Eq クラスのインスタンスでないといけない
- 文字列、リスト、タプルは辞書順で順序付けられる
- Show - 表示可能クラス
- show :: a -> String がメソッド
- Read - 読み込み可能クラス
- read :: String -> a がメソッド
- Show の逆
- 型は推論されるので、たいていはただreadと書くだけで「どの read 関数が使われるか」が推論される
- 微妙な差異ですが、間違った文字列が来た場合「まずどのreadの実装かが決まって、そのreadでパースできないのでエラー」になるのであって「まず(どの型でも読めるreadで)パースして、その結果型が一致しないのでエラー」ではないのがなるほどなと思いました。型安全ですからね
- Num - 数値クラス
- Integral - 数値クラス
- div, mod がメソッド
- Fractional - 分数クラス
- '/', recip がメソッド
- Float は Fractional のインスタンス
第3章はこれで終わりです。