(w/temps x y (def foo (x) (+ x y)) (tempset y 10) (foo 5))
(with (y nil foo nil) (= foo (fn (x) (+ x y))) (= y 10) (foo 5))
From the sound of it, this does not solve lacker's problem, however, because he does not know up front what variables he needs to declare.
-----