【发布时间】:2020-12-10 06:41:47
【问题描述】:
我已经定义了一个数据类型,我允许 GHC 为其自动派生Eq typeclass 的实例。
但是,派生实例并没有我在所有情况下都需要的精确行为。
例如,看看这个数据类型:
data IntegerOrFloat = I Integer | F Float
deriving Eq
(I 0) == (F 0) 计算结果为 False。我希望它评估为真。如果我正在编写实现,我可以简单地这样做:
instance Eq IntegerOrFloat where
(I i) == (F f) = (fromIntegral i) == f
但是,我将不得不编写其他三个案例。显然这对于这种类型来说是微不足道的,但这是一个人为的例子。我非常喜欢让大多数案例自动派生的便利性。
有没有办法让我“覆盖”特定情况下的派生实现,而不必手动编写整个实现?
【问题讨论】:
标签: haskell functional-programming ghc