在Haskell中,类Foldable
是独立的,即
class Foldable t where ...
然而,在弗雷格:
class Functor t => Foldable t where ...
为什么会引入这种约束?可以排除哪些不良形式的计划/想法?
它阻止我定义instance Foldable HashSet
,其中HashSet
是自定义数据类型,它包装Data.HashMap
以提供基于集合的界面。 (首先应用toList
可以解决这个问题,因此这不是一个严重的问题。)
答案 0 :(得分:3)
我认为这个讨论会给你关于这个主题的全部反馈(尤其是关于集合的部分)Haskell : An example of a Foldable which is not a Functor (or not Traversable)?
答案 1 :(得分:2)
我只能猜测曾经是Haskell的Foldable曾经将Functor作为超类一次并且Frege在此时继承了可折叠代码的情况。可能是2012年左右。
我不确定我理解您的担忧,因为Data.HashMap 确实是一个Functor。但无论如何,我邀请你设计一个补丁并提出拉取请求。