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