如果我发现某事是一个 Monoid
要么 Monad
,我得到所有使用各种有趣的功能,如 foldMap
, sequence
甚至 mapM
。他们让我开心。
如果我发现有什么东西,我会得到什么 Category
?除了超载之外我还能获得什么乐趣吗? id
和 (.)
?
如果我发现某事是一个 Monoid
要么 Monad
,我得到所有使用各种有趣的功能,如 foldMap
, sequence
甚至 mapM
。他们让我开心。
如果我发现有什么东西,我会得到什么 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
,这就是你从中获得有趣功能的地方。