如果我发现某个东西是Monoid
or Monad
,我就会使用各种有趣的功能,比如foldMap
,sequence
甚至mapM
。他们让我开心。
如果我发现某物是 a ,我会得到什么Category
?id
除了超载和之外,我还有什么好玩的(.)
吗?
如果我发现某个东西是Monoid
or Monad
,我就会使用各种有趣的功能,比如foldMap
,sequence
甚至mapM
。他们让我开心。
如果我发现某物是 a ,我会得到什么Category
?id
除了超载和之外,我还有什么好玩的(.)
吗?
除了重载 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)
作为旁注:你没有得到那么多有趣的功能的原因mapM
是foldMap
,说某事是一个类别实际上是对它说的很少。我猜最有用的函数是 中定义的函数Control.Category
,它们有时使代码更易于阅读:>>>
和<<<
Control.Category
只是 的基础工作Control.Arrow
,这就是您从中获得有趣功能的地方。