我不明白为什么FingerTree
用 type class 实现Measured
。
我正在尝试实现一个默认度量与幺半群相同的幺半群序列,所以我写了以下内容。
instance Monoid a => Measured (Sum Int, a) a where
measure x = (Sum 1, x)
当然,由于FingerTree
它本身是 a Measured
,这是不可能的,因为我们会得到类型类重叠。
什么时候把这个单一的函数抽象成一个类型类才有意义?为什么我们不能只定义FingerTree
以便我们可以将度量函数提供给构造函数?
也很高兴知道是否有办法克服这个问题。我每次都可以为我的特定用例定义一个新实例,但也许有更好的方法。