-- Monadic folds
-- -------------

-- | /O(n)/ Monadic fold
foldM :: (Monad m, G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs))
  => (r -> Rec (TaggedFunctor Identity) rs -> m r) -> r -> (Vector k) (Rec (TaggedFunctor Identity) rs) -> m r
foldM = G.foldM
foldM :: (Monad m, G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs))
  => (r -> Rec (TaggedFunctor Identity) rs -> m r) -> r -> (Vector k) (Rec (TaggedFunctor Identity) rs) -> m r
foldM = G.foldM
foldM = G.foldM