(defmacro eval-with (syms &body body) `(eval `(let (,,@(mapcar (lambda (b) ``(,',b ',,b)) syms)) ,@',body))) ;; (let ((a 10) (b 20)) ;; (eval-with (a b) ;; '(+ a b))) ;; ==> ;; (let ((a 10) (b 20)) ;; (eval `(let ((a ,a) (b ,b)) ;; (+ a b))))