【发布时间】:2013-08-11 01:05:12
【问题描述】:
我不明白为什么FingerTree 是用类型类Measured 实现的。
我正在尝试实现一系列具有与 monoid 相同的默认度量的 monoid,因此我编写了以下内容。
instance Monoid a => Measured (Sum Int, a) a where
measure x = (Sum 1, x)
当然,由于FingerTree 本身就是Measured,这是不可能的,因为我们会得到类型类重叠。
什么时候把这个单一的函数抽象成一个类型类才有意义?为什么我们不能只定义FingerTree 以便我们可以将度量函数提供给构造函数?
如果有办法解决这个问题也很高兴。我每次都可以为我的特定用例定义一个新实例,但也许有更好的方法。
【问题讨论】:
标签: haskell