我想从一些自定义类的Num声明中取出一些样板(称为Monomial和Polynomial)。而不是写
instance Num (Monomial) where
f - g = f + (negate g)
abs _ = undefined
有没有办法解决这个问题?我遇到了default superclass instances和一些名为“the strathclyde haskell enhancement”的内容,如果实施,可能会让我写下类似内容,
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
处理这个问题的通常/简单方法是什么?
答案 0 :(得分:2)
处理此问题的常用方法是至少执行以下一项或多项操作:
抱怨很多。
编写这样的辅助函数:
simpleMinus f g = f + (negate g)
使用Template Haskell和Derive等工具。
尝试实施您提到的扩展程序。 (遗憾的是,这并不像你想象的那么容易。)