为什么Foldable继承了Frege的Functor?

时间:2017-12-04 08:49:15

标签: types frege

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

class Foldable t where ...

然而,在弗雷格:

class Functor t => Foldable t where ...

为什么会引入这种约束?可以排除哪些不良形式的计划/想法?

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

2 个答案:

答案 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。但无论如何,我邀请你设计一个补丁并提出拉取请求。