summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stdlib/compiler.tl22
1 files changed, 11 insertions, 11 deletions
diff --git a/stdlib/compiler.tl b/stdlib/compiler.tl
index b6d9de2f..b1d69db2 100644
--- a/stdlib/compiler.tl
+++ b/stdlib/compiler.tl
@@ -2232,17 +2232,17 @@
(fix-vals (mapcar (ret (gensym)) fix-arg-exprs))
(fix-arg-iter fix-arg-exprs)
(check-opts)
- (ign-1 (gensym))
- (ign-2 (gensym))
+ (ign (gensym))
(al-val (gensym))
(shadow-p (let ((all-vars (append pars.req pars.(opt-syms)
(if pars.rest (list pars.rest)))))
(or (isecp all-vars fix-arg-iter)
(member apply-list-expr all-vars)))))
- (rlcp ^(,(if shadow-p 'let 'alet) ,(zip fix-vals fix-arg-iter)
+ (rlcp ^(,(if shadow-p 'let 'alet) (,*(zip fix-vals fix-arg-iter)
+ (,ign nil)
+ ,*(if apply-list-expr
+ ^((,al-val ,apply-list-expr))))
(let* ,(build
- (if apply-list-expr
- (add ^(,al-val ,apply-list-expr)))
(while (and fix-vals pars.req)
(add ^(,(pop pars.req) ,(pop fix-vals)))
(pop fix-arg-iter))
@@ -2273,14 +2273,14 @@
(pars.rest
(add ^(,pars.rest nil)))
(apply-list-expr
- (add ^(,ign-2 (if ,al-val
- (lambda-excess-apply-list))))))))
+ (add ^(,ign (if ,al-val
+ (lambda-excess-apply-list))))))))
((and fix-vals apply-list-expr)
(lambda-too-many-args lm-expr))
(apply-list-expr
(when pars.req
- (add ^(,ign-1 (if (< (len ,al-val) ,(len pars.req))
- (lambda-short-apply-list)))))
+ (add ^(,ign (if (< (len ,al-val) ,(len pars.req))
+ (lambda-short-apply-list)))))
(while pars.req
(add ^(,(pop pars.req) (pop ,al-val))))
(while pars.opt
@@ -2299,8 +2299,8 @@
(push (list* var-sym have-sym init-form) check-opts)))
(if pars.rest
(add ^(,pars.rest ,al-val))
- (add ^(,ign-2 (if ,al-val
- (lambda-excess-apply-list))))))
+ (add ^(,ign (if ,al-val
+ (lambda-excess-apply-list))))))
(pars.req
(lambda-too-few-args lm-expr))
(pars.opt