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>