coordNext :: Lens' (Vector (Succ n) a) (Vector n a)
coordNext = lens getter setter
  where
    getter :: Vector (Succ n) a -> Vector n a
    getter (AddVector _ n) = n
    setter :: Vector (Succ n) a -> Vector n a -> Vector (Succ n) a
    setter (AddVector a _) n = AddVector a n
coordNext :: Lens' (Vector (Succ n) a) (Vector n a)
coordNext = lens getter setter
  where
    getter :: Vector (Succ n) a -> Vector n a
    getter (AddVector _ n) = n
    setter :: Vector (Succ n) a -> Vector n a -> Vector (Succ n) a
    setter (AddVector a _) n = AddVector a n
coordNext = lens getter setter
  where
    getter :: Vector (Succ n) a -> Vector n a
    getter (AddVector _ n) = n
    setter :: Vector (Succ n) a -> Vector n a -> Vector (Succ n) a
    setter (AddVector a _) n = AddVector a n