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

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

(>@>) :: 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里并没有这个运算符。

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

阅读 1.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进