0 | module Control.TraversableB
2 | import Control.Applicative.Const
3 | import Control.FunctorB
8 | interface FunctorB k t => TraversableB k t | t where
9 | constructor MkTraversableB
12 | -> {auto app : Applicative e}
13 | -> ((0 a : k) -> f a -> e (g a))
19 | -> {auto app : Applicative e}
20 | -> {auto trv : TraversableB k t}
21 | -> ({0 a : k} -> f a -> e (g a))
23 | btraverse fun = btraverse_ (\_ => fun)
28 | -> {auto app : Applicative e}
29 | -> {auto trv : TraversableB k t}
32 | bsequence = btraverse_ (\_,x => x)
35 | bsequence' : Applicative e => TraversableB Type t => t e -> e (t I)
36 | bsequence' = btraverse_ (\_,x => x)
41 | -> {auto app : Monoid m}
42 | -> {auto trv : TraversableB k t}
43 | -> ({0 a : k} -> f a -> m)
46 | bfoldMap g b = runConst $
btraverse {g = f} (MkConst . g) b