-- | /O(n)/ Construct a vector of the given length by applying the monadic
-- action to each index
generateM :: (Monad m, G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs))
  => Int -> (Int -> m (Rec (TaggedFunctor Identity) rs)) -> m ((Vector k) (Rec (TaggedFunctor Identity) rs))
generateM = G.generateM
generateM :: (Monad m, G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs))
  => Int -> (Int -> m (Rec (TaggedFunctor Identity) rs)) -> m ((Vector k) (Rec (TaggedFunctor Identity) rs))
generateM = G.generateM
generateM = G.generateM