型と型クラス

9.4 型クラス

class宣言とinstance宣言について

この二つを使いこなせば、ある程度オブジェクト指向プログラミングがHaskellで出来るのではないか?
と思いました。
今後いろいろ遊んでみようかな。
とりあえずこんな感じ。

main = do print tag

data Font = Font {aSize  :: Int,
                  aColor :: String,
                  aStr   :: String}

{--
  型FontをShowクラスのインスタンスとして宣言する。
--}
instance Show Font where
    show (Font {aSize = size, aColor = color, aStr = str}) =
        concat ("Call Font::Show " : ((show size) : ((show color) : (str : []))))

tag :: Font
tag = Font 14 "red" "This is font tag."


めちゃめちゃ汚いコードですが、以前作成した型FontをShowクラスのインスタンスにしています。
Showクラスのインスタンスなので、クラスメソッドshowを実装しています。


これでprintしたい時に楽になりますね♪