为什么 Sum 和 Product 不是函子
Why Sum and Product aren't Functors
Sum
在 base 4.7.0.2 中定义没有 Functor
实例。为什么?
例如,semigroups
包中定义的类型有 Functor
、Applicative
和 Monad
,例如Min
,其行为类似于 Identity` - 对我来说很有意义。
我认为这些不是 Functor
实例的主要原因是您尚未提交代码审查以使其成为实例。您可以在 Trac, then submit a code review on Phabricator. The preferred Phabricator workflow (using Arcanist), along with other details, can be found here.
提交工单
在这样做的同时,您可能还应该使它们成为 Applicative
和 Monad
的实例。您还应该分别在 Data.Foldable
和 Data.Traversable
中为它们添加 Foldable
和 Traversable
实例。
如果你想让我猜猜为什么没有其他人这样做:
虽然 Sum
和 Product
可以容纳任何类型的东西,但 Monoid
实例只对 Num
实例有意义。因此 fmap
的类型感觉有点奇怪。然而,这并不是不让它们成为 Functor
个实例的好理由。
Sum
在 base 4.7.0.2 中定义没有 Functor
实例。为什么?
例如,semigroups
包中定义的类型有 Functor
、Applicative
和 Monad
,例如Min
,其行为类似于 Identity` - 对我来说很有意义。
我认为这些不是 Functor
实例的主要原因是您尚未提交代码审查以使其成为实例。您可以在 Trac, then submit a code review on Phabricator. The preferred Phabricator workflow (using Arcanist), along with other details, can be found here.
在这样做的同时,您可能还应该使它们成为 Applicative
和 Monad
的实例。您还应该分别在 Data.Foldable
和 Data.Traversable
中为它们添加 Foldable
和 Traversable
实例。
如果你想让我猜猜为什么没有其他人这样做:
虽然 Sum
和 Product
可以容纳任何类型的东西,但 Monoid
实例只对 Num
实例有意义。因此 fmap
的类型感觉有点奇怪。然而,这并不是不让它们成为 Functor
个实例的好理由。