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