extendz :: (Zipper a -> b) -> Zipper a -> Zipper b
extendz f z@(Zip _ _) = Zip ls' rs' where
    rs' = foldrz (\z' xs -> f z' : xs) [] z
    ls' = foldrz (\z' xs -> f (reversez $ right z') : xs) [] $ reversez z
extendz :: (Zipper a -> b) -> Zipper a -> Zipper b
extendz f z@(Zip _ _) = Zip ls' rs' where
    rs' = foldrz (\z' xs -> f z' : xs) [] z
    ls' = foldrz (\z' xs -> f (reversez $ right z') : xs) [] $ reversez z
extendz f z@(Zip _ _) = Zip ls' rs' where
    rs' = foldrz (\z' xs -> f z' : xs) [] z
    ls' = foldrz (\z' xs -> f (reversez $ right z') : xs) [] $ reversez z