型宣言があるとしましょう:
data MyType = N Double | C Char | Placeholder
Num、Real、Fractional のすべての関数が、N コンストラクターでラップされた引数の N (通常の結果) になり、他の引数の Placeholder が得られるように、可能な限り MyType を Double として処理できるようにしたいと考えています。
> (N 5.0) + (N 6.0)
N 11.0
> (N 5.0) + (C 'a')
Placeholder
次のような方法で、このクラスをこれらのクラスのインスタンスとして単純に定義する以外に、これを行う方法はありますか?
instance Num MyType where
(+) (N d1) (N d2) = N (d1+d2)
(+) _ _ = Placeholder
...
(これは逆効果のようです)?