Control.Category 有什么用?

发布于 2024-12-10 10:59:12 字数 244 浏览 0 评论 0原文

如果我发现某个东西是 MonoidMonad,我就会使用各种有趣的函数,例如 foldMap序列 甚至mapM。他们让我快乐。

如果我发现某个东西是Category,我会得到什么?除了重载 id(.) 之外,我还能得到什么有趣的东西吗?

If I find out that something is a Monoid or Monad, I get all to use all kinds of fun functions, like foldMap, sequence or even mapM. They make me happy.

What do I get if I find out that something is a Category? Do I get anything fun besides overloading id and (.) ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半葬歌 2024-12-17 10:59:12

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

Do I get anything fun besides overloading id and (.) ?

Well, you also (should) get the laws associated with them:

"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)

As a side note:
The reason that you don't get that many fun functions like mapM or foldMap is, that saying something is a category is actually saying very little about it. The most useful functions I guess are the ones defined in Control.Category, which sometimes make code easier to read: >>> and <<<

瞄了个咪的 2024-12-17 10:59:12

Control.Category 只是 Control.Arrow 的基础工作,您可以从中获得有趣的函数。

Control.Category is just the ground work for Control.Arrow, and that's where you get the fun functions from.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文