为什么Sum和Product不是Functors

pha*_*dej 9 haskell typeclass

Sum在基础4.7.0.2中定义的没有Functor实例.为什么?

例如,在定义的类型semigroups包有Functor,ApplicativeMonad在例如Min,它们的行为likeIdentity` -对我来说很有意义.

dfe*_*uer 8

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

当你这样做的时候,你也应该把它们作为实例Applicative,和Monad.您还应该分别在和中添加FoldableTraversable实例.Data.FoldableData.Traversable

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

虽然Sum并且Product可以容纳任何类型的东西,但Monoid实例只对Num实例有意义.fmap因此,这种类型感觉有点奇怪.然而,这并不是一个不让它们成为Functor实例的好理由.