From f6da8bc8a634a218e1ca4e87238abcc3c188d29e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 11 May 2022 20:48:27 +0200 Subject: Move let-env to own module. --- module/hnh/util/env.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 module/hnh/util/env.scm (limited to 'module/hnh/util/env.scm') diff --git a/module/hnh/util/env.scm b/module/hnh/util/env.scm new file mode 100644 index 00000000..a6877186 --- /dev/null +++ b/module/hnh/util/env.scm @@ -0,0 +1,25 @@ +(define-module (hnh util env) + :export (let-env)) + +(define-syntax let-env + (syntax-rules () + [(_ ((name value) ...) + body ...) + + (let ((env-pairs #f)) + (dynamic-wind + (lambda () + (set! env-pairs + (map (lambda (n new-value) + (list n new-value (getenv n))) + (list (symbol->string (quote name)) ...) + (list value ...))) + (for-each (lambda (pair) (setenv (car pair) (cadr pair))) + env-pairs)) + (lambda () body ...) + (lambda () + (for-each (lambda (pair) (setenv (car pair) (caddr pair))) + env-pairs))))])) + + + -- cgit v1.2.3