aboutsummaryrefslogtreecommitdiff
path: root/module/util.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/util.scm')
-rw-r--r--module/util.scm16
1 files changed, 15 insertions, 1 deletions
diff --git a/module/util.scm b/module/util.scm
index 707cba90..0d4d20d6 100644
--- a/module/util.scm
+++ b/module/util.scm
@@ -12,7 +12,7 @@
re-export-modules
use-modules*
-> set aif
- tree-map let-lazy)
+ tree-map let-lazy let-env)
#:replace (let* set! define-syntax
when unless if))
@@ -374,3 +374,17 @@
[(set (acc obj) = (op rest ...))
(set-fields
obj ((acc) (op (acc obj) rest ...)))]))
+
+
+
+;; TODO multiple values
+(define-syntax let-env
+ (syntax-rules ()
+ [(_ ((name value))
+ body ...)
+ (let ((sname (symbol->string (quote name))))
+ (let ((ogenv (getenv sname)))
+ (setenv sname value)
+ (let ((return (begin body ...)))
+ (setenv sname ogenv)
+ return)))]))