From 4080b0c7e97acb7357a7ab85589b324e382e0d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 4 Nov 2019 17:08:38 +0100 Subject: Add let-env. --- module/util.scm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'module/util.scm') 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)))])) -- cgit v1.2.3