let rec iter_term1 funvar funop funcoller premier = function 
    (Var x) -> funvar x 
  | (Operation (oper,fils)) -> 
      let 
        recur term = iter_term1 funvar funop funcoller premier term
      in 
        funop oper 
          (List.fold_left funcoller premier
             (List.map recur fils)
          )