summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-06-29 08:27:53 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-06-29 08:27:53 -0700
commitdab203db38bf1ab2eef322c17d317af02c7f5dc1 (patch)
treee61eb2ab307d91615ab02f25f4851f206b139db2
parent1fb6f6691d5b6fb6b037bb14073694f651f2b9fc (diff)
downloadtxr-dab203db38bf1ab2eef322c17d317af02c7f5dc1.tar.gz
txr-dab203db38bf1ab2eef322c17d317af02c7f5dc1.tar.bz2
txr-dab203db38bf1ab2eef322c17d317af02c7f5dc1.zip
defset: small code improvement.
* share/txr/stdlib/defset.tl (defset-expander): Move with-gensyms to outermost scope so we can include nvsym in it, avoiding the explicit (nvnsm (gensym)) binding.
-rw-r--r--share/txr/stdlib/defset.tl29
1 files changed, 14 insertions, 15 deletions
diff --git a/share/txr/stdlib/defset.tl b/share/txr/stdlib/defset.tl
index 5312d5dd..9920e925 100644
--- a/share/txr/stdlib/defset.tl
+++ b/share/txr/stdlib/defset.tl
@@ -56,21 +56,20 @@
,body)))))))
(defun defset-expander (env macform name params newval setform)
- (let* ((ap (analyze-params params))
- (exp-params (car ap))
- (total-syms (cadr ap))
- (fp (new fun-param-parser form macform syntax exp-params))
- (fixpars (append fp.req fp.(opt-syms)))
- (restpar (if (symbol-package fp.rest) fp.rest))
- (extsyms [keep-if symbol-package
- (diff total-syms (cons restpar fixpars))])
- (nvsym (gensym))
- (xsetform ^^(alet ((,',nvsym ,,newval))
- ,,(expand ^(symacrolet ((,newval ',nvsym))
- ,setform)
- env))))
- (with-gensyms (getter setter args gpf-pairs gpr-pairs ext-pairs
- pgens rgens egens all-pairs agens)
+ (with-gensyms (getter setter args gpf-pairs gpr-pairs ext-pairs
+ pgens rgens egens all-pairs agens nvsym)
+ (let* ((ap (analyze-params params))
+ (exp-params (car ap))
+ (total-syms (cadr ap))
+ (fp (new fun-param-parser form macform syntax exp-params))
+ (fixpars (append fp.req fp.(opt-syms)))
+ (restpar (if (symbol-package fp.rest) fp.rest))
+ (extsyms [keep-if symbol-package
+ (diff total-syms (cons restpar fixpars))])
+ (xsetform ^^(alet ((,',nvsym ,,newval))
+ ,,(expand ^(symacrolet ((,newval ',nvsym))
+ ,setform)
+ env))))
^(defplace (,name . ,args) body
(,getter ,setter
(tree-bind ,params ,args