I think this works in Guile 1.8.7 (I don't have a later version):
(define-macro (progv vars vals . body)
`(let (,@(map (lambda (var val)
(list var val))
(cadr vars)
(cadr vals)))
,@body))
(progv '(one two) '(1 2) (+ one two))
3
Maybe prettier syntax:
(define-macro (progv vars vals . body)
`(let (,@(map (lambda (var val)
(list var val))
vars vals))
,@body))
(progv (one two) (1 2) (+ one two))
3
