reverse :: SizedList n a -> SizedList n a
reverse list = rev list N
  where
    rev :: SizedList p a -> SizedList m a -> SizedList (m+p) a
    rev N ys = ys
    rev (x:-xs) ys = rev xs (x:-ys)
reverse :: SizedList n a -> SizedList n a
reverse list = rev list N
  where
    rev :: SizedList p a -> SizedList m a -> SizedList (m+p) a
    rev N ys = ys
    rev (x:-xs) ys = rev xs (x:-ys)
reverse list = rev list N
  where
    rev :: SizedList p a -> SizedList m a -> SizedList (m+p) a
    rev N ys = ys
    rev (x:-xs) ys = rev xs (x:-ys)