自左向右的Kleisli组合Monad运算符写成>@>的出处?

发布于 2022-09-07 20:47:39 字数 866 浏览 27 评论 0

整理一年前的笔记,看到一段代码:

(>@>) :: Monad m => (a -> m b) ->
                    (b -> m c) ->
                    (a -> m c)
f >@> g = \x -> (f x) >= g

看起来是Monad Composition,但是当初没有写下出处。
搜索引擎对>@>这样的字符很不友好,好在有类型,hoogle到就是Control.Monad中的>=>(Left-to-right Kleisli composition of monads),定义完全一致:

(>=>)       :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
f >=> g     = \x -> f x >>= g

只是写法不一样(>=>>@>)。

搜了下Haskell 98里并没有这个运算符。

好奇这个>@>出自哪里?(所以一年前的我为什么没有记录出处啊?坑!)

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文