-- | /O(n)/ Drop elements that do not satisfy the monadic predicate
filterM :: (Monad m, G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs))
  => (Rec (TaggedFunctor Identity) rs -> m Bool) -> (Vector k) (Rec (TaggedFunctor Identity) rs) -> m ((Vector k) (Rec (TaggedFunctor Identity) rs))
filterM = G.filterM
filterM :: (Monad m, G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs))
  => (Rec (TaggedFunctor Identity) rs -> m Bool) -> (Vector k) (Rec (TaggedFunctor Identity) rs) -> m ((Vector k) (Rec (TaggedFunctor Identity) rs))
filterM = G.filterM
filterM = G.filterM