整理一年前的笔记,看到一段代码:
(>@>) :: 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里并没有这个运算符。
好奇这个>@>
出自哪里?(所以一年前的我为什么没有记录出处啊?坑!)