14

如果我发现某个东西是Monoidor Monad,我就会使用各种有趣的功能,比如foldMapsequence甚至mapM。他们让我开心。

如果我发现某物是 a ,我会得到什么Categoryid除了超载和之外,我还有什么好玩的(.)吗?

4

2 回答 2

11

除了重载 id 和 (.) 之外,我还有什么好玩的吗?

好吧,您还(应该)获得与它们相关的法律:

"identity/left" forall p .
                id . p = p
"identity/right"        forall p .
                p . id = p
"association"   forall p q r .
                (p . q) . r = p . (q . r)

作为旁注:你没有得到那么多有趣的功能的原因mapMfoldMap,说某事是一个类别实际上是对它说的很少。我猜最有用的函数是 中定义的函数Control.Category,它们有时使代码更易于阅读:>>><<<

于 2011-10-19T07:49:31.317 回答
7

Control.Category只是 的基础工作Control.Arrow,这就是您从中获得有趣功能的地方。

于 2011-10-19T08:17:05.737 回答