3

我想从一些自定义类的 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

处理这个的通常/简单的方法是什么?

4

1 回答 1

2

处理此问题的通常方法是至少执行以下一项或多项操作:

  1. 多发牢骚。

  2. 编写这样的辅助函数:

simpleMinus fg = f + (否定 g)
  1. 使用Template HaskellDerive等工具。

  2. 尝试实现您提到的扩展。(不幸的是,这并不像您想象的那么容易。)

于 2011-05-03T04:14:11.320 回答