Sum
没有Functor
实例。为什么呢?
例如,semigroups
包中定义的类型包括Functor
,Applicative
和Monad
。 Min
,表现得像身份` - 对我有意义。
答案 0 :(得分:8)
我认为这些不是Functor
个实例的主要原因是您尚未提交代码审核以实现这些目标。您可以在Trac上提交票证,然后在Phabricator上提交代码审核。可以找到首选的Phabricator工作流程(使用Arcanist)以及其他详细信息{。{3}}。
在您执行此操作时,您可能还应该将它们设为Applicative
和Monad
的实例。您还应该分别在Foldable
和Traversable
添加Data.Foldable
和Data.Traversable
个实例。
如果你想让我猜到为什么没有其他人这样做:
虽然Sum
和Product
可以容纳任何类型的内容,但Monoid
个实例仅对Num
个实例有意义。 fmap
的类型因此感觉有点奇怪。但是,这并不是一个很好的理由不让它们Functor
实例。