let rec combine = function
  lx, ly
  -> if is_empty_list (lx)
       then empty_list ()     (* ----- lx (or ly) : type error ----- *)
       else cons_list ((head (lx), head (ly)), combine (tail (lx), tail (ly)))