let rec last_without_last = function
  lx -> if is_empty_list (tail (lx)) 
          then (head (lx), empty_list ())
          else let
                 (x1, lx1) = last_without_last (tail (lx))
               in
                 (x1, cons_list (head (lx), lx1))