let vars e =
  let rec visit collect = function
    | Var x -> x :: collect
    | Int n -> collect
    | Plus (e1, e2) -> visit (visit collect e1) e2
  in visit [] e;;
let e = Plus (Var "x", Plus (Var "y", Int 0));;
vars e;;