let rec split = function
lxy -> if is_empty_list (lxy)
then (empty_list (), empty_list ()) (* ----- (lxy, lxy) : type error ----- *)
else let
(x, y) = head (lxy)
and
(lx, ly) = split (tail (lxy))
in
(cons_list (x, lx), cons_list (y, ly))