Foldable为什么要继承Frege中的Functor?

Why does Foldable inherit from Functor in Frege?

在 Haskell 中,class Foldable 是独立的,即

class Foldable t where ...

然而,在弗雷格那里:

class Functor t => Foldable t where ...

为什么要引入这个约束?它可以排除什么格式错误的programs/ideas?

它阻止我定义 instance Foldable HashSet,其中 HashSet 是一种自定义数据类型,它包装 Data.HashMap 以提供基于集合的接口。 (可以通过先应用 toList 来解决,所以这不是一个严重的问题。)

我认为这个讨论给了你关于这个话题的全部反馈(尤其是关于集合的部分)Haskell : An example of a Foldable which is not a Functor (or not Traversable)?

我只能猜测,以前是Haskell的Foldable确实有一次Functor作为超类,而Frege此时继承了Foldable的代码。可能是 2012 年左右。

我不确定我是否理解您的担忧,因为 Data.HashMap 确实是一个 Functor。但无论如何,我邀请你设计一个补丁并提出一个拉取请求。