クラス・インスタンス

  • 型クラスは"型クラス(type class)は相異なるデータ型に共通したインターフェイスを持つ関数を定義する。"(Wiki)
  • クラスは、「こういうことをやりたい」という「抽象的な仕事」に対して定義する
  • 「抽象的な仕事」は型に依存しないので(しないこともあるので)、型を特定せずに、「仕事」に持たせる「型(入力値の型、出力値の型)」を決めることができる
    • 逆に言うと、入力値の数と出力値の数とが異なるような「仕事」は「抽象的に同じ仕事」とは呼ばない、ということにしている。その枠組みで「抽象的に同じ仕事」は「クラス」としてまとめてよい、ということにしている、ということ(のようだ)
  • その上で、型ごとに「具体的な仕事」のやり方は変わるので、それを決めなくてはいけない(書き下しておかないといけない)、と言う仕組み
  • こちらで、モジュールを作りながらクラスについて説明している
    • このサイトのHoge.hsをロードして、main関数を走らせる
:load "Hoge.hs"
main
<||
>|haskell|
Prelude> :cd C:\Users\ryamada\Desktop\Haskell
Prelude> :load "Hoge.hs"
[1 of 1] Compiling Main             ( Hoge.hs, interpreted )
Ok, modules loaded: Main.
*Main> main
"> AAA"
"> BBBCCC"
*Main>