map values into an s expr, use postwalk-replace
(fn [f]
(fn fvals [v]
((fn evl [f1]
(let [f2 (clojure.walk/postwalk-replace v f1)]
(cond
(seq? f2) (apply ({'+ + '- - '* * '/ /} (first f2)) (map evl (rest f2)))
:else f2))) f)))