为什么Sum和Product不是Functors

时间:2015-02-21 11:21:13

标签: haskell typeclass

基础4.7.0.2中定义的

Sum没有Functor实例。为什么呢?

例如,semigroups包中定义的类型包括FunctorApplicativeMonadMin,表现得像身份` - 对我有意义。

1 个答案:

答案 0 :(得分:8)

我认为这些不是Functor个实例的主要原因是您尚未提交代码审核以实现这些目标。您可以在Trac上提交票证,然后在Phabricator上提交代码审核。可以找到首选的Phabricator工作流程(使用Arcanist)以及其他详细信息{。{3}}。

在您执行此操作时,您可能还应该将它们设为ApplicativeMonad的实例。您还应该分别在FoldableTraversable添加Data.FoldableData.Traversable个实例。

如果你想让我猜到为什么没有其他人这样做:

虽然SumProduct可以容纳任何类型的内容,但Monoid个实例仅对Num个实例有意义。 fmap的类型因此感觉有点奇怪。但是,这并不是一个很好的理由不让它们Functor实例。