2 | module Data.Filterable.Dependent
4 | import public Data.Functor.Dependent
8 | interface (DepFunctor i t) => DepFilterable (0 i : Type) (0 t : (i -> Type) -> Type) | t where
9 | dmapMaybe : {0 u : i -> Type} -> {0 v : i -> Type} -> ((x : i) -> u x -> Maybe (v x)) -> t u -> t v
10 | dmapMaybe f = dcatMaybes . dmap f
12 | dcatMaybes : {0 v : i -> Type} -> t (Maybe . v) -> t v
13 | dcatMaybes = dmapMaybe (\_, y => y)
15 | flush : {0 u : i -> Type} -> {0 v : i -> Type} -> t u -> t v
16 | flush = dmapMaybe (\_, _ => Nothing)