0
私は、データ型インスタンスの使用のイラストレーション(退屈な単純なもの)ですすなわち、異なるデータに対して異なる挙動を定義することができる。データ型インスタンス?
もしそうでなければ、どのように使用できますか?
コード:彼らはどんな違いがありませんので
data HealthIndicators = Weight | Age | BloodPressure deriving (Show)
data IrrelevantIndicators = Starsign | BirthMonth | IQ deriving (Show)
class IndicatorTest a where
indicatortest :: a -> Bool
instance IndicatorTest HealthIndicators where
indicatortest Weight = True
indicatortest Age = True
indicatortest BloodPressure = True
instance IndicatorTest IrrelevantIndicators where
indicatortest Starsign = False
indicatortest BirthMonth = False
indicatortest IQ = False
タイプセーフな(平等)(https://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#t:Eq)、注文などを簡単に定義することができます。型クラスがより上位の類別型(例えば、[monads](https://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#t)のようなものである可能性があるという事実にまで達していません:Monad)または矢印) – Alec
これは本当ですが、通常は2つの異なる機能を使用します。あるいは、異なるモジュールに2つの同じ名前の関数を定義することもできます。大部分のケースでは、OOPのように動的ディスパッチは必要ありません。それでも、あなたの例は技術的には正しいですが、 'Ord、Eq、Show、Monoid、...'ははるかに興味深く一般的です。あなたはそれらを見たいかもしれません。 – chi
はい、可能な目標の1つは、さまざまなデータタイプに共通の用途を見つけることです。これは、上記のデータ型の元の著者が想像していなかったものを使用することもあります。つまり、私はこの例が素晴らしいデータモデルであるとは確信していません。 – Ingo