View difference between Paste ID: MWujsYND and 67f50afC
SHOW: | | - or go back to the newest paste.
1-
;;;
1+
(define-syntax-rule (begin0 exp exps ...)
2-
;;; The first attempt on macros:
2+
  (call-with-values
3-
;;;
3+
      (lambda () exp)
4-
;;; (getenv "asdf")
4+
    (lambda vals
5-
;;; => "999"
5+
      exps ...
6-
;;;
6+
      (apply values vals))))
7-
;;; (let-env (("asdf" "123"))
7+
8-
;;;   (getenv "asdf"))
8+
(define-syntax-rule (let-env ((var val) ...) exp exp* ...)
9-
;;; => "123"
9+
  (let ((old-env (environ)))
10-
;;;
10+
    (for-each setenv (list var ...) (list val ....))
11-
;;; (getenv "asdf")
11+
    (begin0
12-
;;; => "999"
12+
      (begin exp exp* ...)
13-
;;;
13+
      (environ old-env))))