Я хочу взять несколько шаблонов из объявлений Num для нескольких пользовательских классов (назовите их Monomial и Polynomial). Вместо написания
instance Num (Monomial) where
f - g = f + (negate g)
abs _ = undefined
Есть ли способ обойти это? Я наткнулся на экземпляры суперкласса по умолчанию и что-то под названием " улучшение скелета стратклайда ", которое в случае его реализации может позволить мне написать что-то вроде
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
Какой обычный / простой способ справиться с этим?