Skip to content

Commit a384e04

Browse files
committed
feat(std): add Kleisli composition operators
1 parent bed7051 commit a384e04

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

std/monad.glu

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,19 @@ let (>>=) x f : [Monad m] -> m a -> (a -> m b) -> m b = flat_map f x
4747

4848
let join mm : [Monad m] -> m (m a) -> m a = mm >>= (\x -> x)
4949

50+
// Kleisli composition
51+
#[infix(right, 9)]
52+
let (<=<) g f : [Monad m] -> (b -> m c) -> (a -> m b) -> m c = flat_map g << f
53+
54+
#[infix(left, 9)]
55+
let (>=>) f g : [Monad m] -> (a -> m b) -> (b -> m c) -> m c = f >> flat_map g
56+
5057
{
5158
Monad,
5259
flat_map,
5360
(>>=),
5461
(=<<),
5562
join,
63+
(<=<),
64+
(>=>)
5665
}

0 commit comments

Comments
 (0)