08/06/04 03:18:52
Haskell実用経験皆無の俺が来ましたよ
>>168
4.1 Overview of Types and Classes
> but the type system has been extended with type classes (or just classes)
> that provide a structured way to introduce overloaded functions.
型クラスの存在意義がわかるかどうかだと思う。
整数の足し算と有理数の足し算って、ふつう同じ記号を使うけど、
計算の内容は違う(多重定義、オーバーロードされている)でしょ。
でも、共通の性質を考えたいときもある。
そのとき、ただ「共通の演算記号+を使っているから同類とみなす」では話にならないから、
twice :: a -> a
twice x = x + x -- 2倍したいけど、+の型などがコンパイル時に不明
+を「Numという型クラスの特徴」として整理して、整数や有理数はその特徴を共有している、とみなすと。
twice :: Num a => a -> a -- 「型aはクラスNumに属する(Numのインスタンスである)」という前提をする
twice x = x + x -- と、演算子+の存在と型が保証される
そんな感じ?(ごめん、確認してない)