Control.Category有什么用?

时间:2011-10-19 07:44:41

标签: math haskell

如果我发现某些内容属于MonoidMonad,我会全部使用各种有趣的功能,例如foldMapsequence甚至{{ 1}}。他们让我开心。

如果我发现某些内容是mapM,我会得到什么?除了重载Categoryid之外,我还能获得什么乐趣吗?

2 个答案:

答案 0 :(得分:9)

  

除了重载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中定义的函数,有时可以使代码更易于阅读:>>><<<

答案 1 :(得分:7)

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