2025年9月26日金曜日

Haskell 型クラスについて

 Haskell入門とRealWorlHaskellあたりを参考に型クラスについて まとめたみた
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 件のコメント:

コメントを投稿