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