let accumul_right = function
  (op, neutral) -> (let rec f = function
                     lx -> if is_empty_list (lx)
                             then neutral
                             else op (head (lx), f (tail (lx)))
                   in
                     f)