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)))) |