let exp_fold var int plus =
  let rec fold = function
  | Var x -> var x
  | Int n -> int n
  | Plus (e1, e2) -> plus (fold e1) (fold e2) in
  fold;;
val exp_fold :
  (string -> 'a) -> (int -> 'a) -> ('a -> 'a -> 'a) -> exp -> 'a = <fun>