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)
)