如果我发现某事是一个 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,这就是你从中获得有趣功能的地方。