2 | import public Data.Linear.ELift1
7 | map1 : (a -> b) -> E1 s es a -> E1 s es b
9 | let R v t := g t | E e t => E e t
13 | (<$>) : (a -> b) -> E1 s es a -> E1 s es b
17 | (<&>) : E1 s es a -> (a -> b) -> E1 s es b
21 | ignore1 : E1 s es a -> E1' s es
23 | let R _ t := f t | E e t => E e t
27 | pure : a -> E1 s es a
31 | (>>=) : E1 s es a -> (a -> E1 s es b) -> E1 s es b
33 | let R v t2 := f t1 | E e t2 => E e t2
37 | (>>) : E1' s es -> E1 s es b -> E1 s es b
38 | (>>) f g = E1.(>>=) f (\(),t => g t)
41 | (<*) : E1 s es b -> E1' s es -> E1 s es b
43 | let R v t := f t | E e t => E e t
44 | R _ t := g t | E e t => E e t
48 | (<*>) : E1 s es (a -> b) -> E1 s es a -> E1 s es b