if lambda were applicable, this would work in both cases: (define-macro (progv vars vals . body) `(apply (apply lambda ,vars ',body) ,vals))
> (let ((s '(one two)) (v '(1 2))) (progv s v (+ one two))) 3 > (progv '(one two) '(1 2) (+ one two)) 3 (running a mystery scheme...)