いくつかのカスタムクラス(単項式および多項式と呼びます)のNum宣言からボイラープレートの一部を削除したいと思います。書く代わりに
instance Num (Monomial) where
f - g = f + (negate g)
abs _ = undefined
これを回避する方法はありますか?私はデフォルトのスーパークラスインスタンスと「 strathclydehaskellenhancement」と呼ばれるものに出くわしました。これを実装すると、次のようなものを書くことができます。
class SimpleNum a => Num a where
(+) :: a -> a -> a -- standard ring stuff
(*) :: a -> a -> a
one :: a
zero :: a
instance Num (SimpleNum a) where
f - g = f + (negate g)
abs _ = undefined
これに対処する通常の/簡単な方法は何ですか?