-- | /O(1)/ Yield the first @n@ elements paired with the remainder without copying.
--
-- Note that @'splitAt' n v@ is equivalent to @('take' n v, 'drop' n v)@
-- but slightly more efficient.
splitAt :: G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs)
  => Int -> (Vector k) (Rec (TaggedFunctor Identity) rs) -> ((Vector k) (Rec (TaggedFunctor Identity) rs), (Vector k) (Rec (TaggedFunctor Identity) rs))
splitAt = G.splitAt
splitAt :: G.Vector (Vector k) (Rec (TaggedFunctor Identity) rs)
  => Int -> (Vector k) (Rec (TaggedFunctor Identity) rs) -> ((Vector k) (Rec (TaggedFunctor Identity) rs), (Vector k) (Rec (TaggedFunctor Identity) rs))
splitAt = G.splitAt
splitAt = G.splitAt