【问题标题】:Why does Foldable inherit from Functor in Frege?为什么 Foldable 继承自 Frege 中的 Functor?
【发布时间】:2017-12-04 08:49:14
【问题描述】:

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

class Foldable t where ...

但是,在弗雷格:

class Functor t => Foldable t where ...

为什么要引入这个约束?它可以排除哪些格式不正确的程序/想法?

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

【问题讨论】:

    标签: types frege


    【解决方案1】:

    我认为这次讨论为您提供了有关该主题的全部反馈(尤其是关于 Sets 的部分)Haskell : An example of a Foldable which is not a Functor (or not Traversable)?

    【讨论】:

    • 弗雷格为何选择将其Foldables 限制为Functors - 我不知道
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回答。我开了一个PR
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多