Haskell入門とRealWorlHaskellあたりを参考に型クラスについて まとめたみた
Java Haskell
インターフェース 型クラス 型がもつべきメソッドを規定
具象クラス インスタンス 規定されたメソッドの実装
インスタンス 値 個々のデータ
Java Haskell
インターフェース 型クラス 型がもつべきメソッドを規定
具象クラス インスタンス 規定されたメソッドの実装
インスタンス 値 個々のデータ
class BasicEq a where ← BasicEqという型クラスを宣言
isEqual :: a -> a -> Bool インスタンスの型はaで表現
isEqal x y = not (isNotEqual x y) ←このようなディフォルト実装あれば、インスタンス
isNotEqual :: a -> a -> Bool で繰り返しの実装を省力化できる
isNotEqual x y= not (isEqual x y)
この型クラスのインスタンスである型は この型クラスの中で定義されている関数を実装しているならどんな型でもいい。 この型クラスでは1つだけ関数を定義している。
関数の型を並べるときにその名前(a)をインスタンスのクラスを表すのに使うことが必要。
:t isEqualを確認すると
isEqual :: ( BasicEq a ) => a->a-> Bool
これは、「任意の型aに対して aがBasicEqのインスタンスである限り、isEqual は 型aのパラメータを2つ取り、Boolを返す」
isEaqualの定義は
instance BasicEq Bool where
isEqual True True = True
isEqual False False =True
isEqual _ _ =False
instance BasicEq Color where
isEqual Red Red = True
..... のようにインスタンスの種類を増やせる
0 件のコメント:
コメントを投稿