2 | import public Data.List.Quantifiers
3 | import public Data.Linear.Token
8 | map1 : (a -> b) -> F1 s a -> F1 s b
9 | map1 f g t = let v # t := g t in f v # t
12 | (<$>) : (a -> b) -> F1 s a -> F1 s b
16 | (<&>) : F1 s a -> (a -> b) -> F1 s b
20 | ignore1 : F1 s a -> F1' s
21 | ignore1 f t = let _ # t := f t in () # t
28 | (>>=) : F1 s a -> (a -> F1 s b) -> F1 s b
29 | (>>=) f g t1 = let v # t2 := f t1 in g v t2
32 | (>>) : F1' s -> F1 s b -> F1 s b
33 | (>>) f g = T1.(>>=) f (\(),t => g t)
36 | (<*) : F1 s b -> F1' s -> F1 s b
43 | (<*>) : F1 s (a -> b) -> F1 s a -> F1 s b