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


Reply via email to