型と型クラス

9.4 型クラス


オブジェクト指向でクラスというキーワードはよく出てきますが、
Haskellにおける型クラスはオブジェクト指向におけるクラスとはちょっと異なるものですね。
型の分類とでも言いましょうか。型のグループとでも言いましょうか。

アドホックとは?

よく「アドホック(Ad hok)」という言葉を聞きますけど、これってどういう意味?
ということで軽く調べてみました。Wikipediaによると…

アドホック(ad hoc)は、「特定の目的のための」「限定目的の」などといった意味のラテン語の語句である。 
ad hocのadは「〜へ」「〜について」、hocはhaecから派生しており「これ」「この」という意味(hoc < hic < haec)で、
英語では「for this」に相当することになる。


ということで「アドホック多相」とは、

特定の目的のための多相


となります。なるほど、意味が一致しますね。
特定の目的のために制約を設けた多相ということですね。

オブジェクト指向と型クラスについて

上でHaskellの型クラスとオブジェクト指向のクラスはちょっと違う、と書きましたけど、
そんなことありませんね。同じものですね。


型ごとに型クラスで決められた関数を実装しないといけなかったり、型クラスの継承が出来たりと、
これってオブジェクト指向そのものじゃないか!と思いました。
ストラウストラップが提唱するオブジェクト指向の3要素


のうち、継承、多態性が実現されていますね。
あまりやらないのかも知れませんが、
Haskellを使ったオブジェクト指向プログラミングというのもできるのかなぁと思いました。
次にclass宣言で新しい型クラスの作り方を勉強したらちょっと試してみようかな。