diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-06-29 08:27:53 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-06-29 08:27:53 -0700 |
commit | dab203db38bf1ab2eef322c17d317af02c7f5dc1 (patch) | |
tree | e61eb2ab307d91615ab02f25f4851f206b139db2 /share | |
parent | 1fb6f6691d5b6fb6b037bb14073694f651f2b9fc (diff) | |
download | txr-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.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/defset.tl | 29 |
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 |