let
exp_sexp_fold ~var ~s ~int ~plus =
let
rec
fold =
function
| Var x -> var x
| S z ->
s (sexp_fold
~int
~plus:(
fun
e1 e2 -> plus (fold e1) (fold e2))
z)
in
fold;;