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