summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2014-04-13 14:22:22 +0200
committerAndy Wingo <wingo@pobox.com>2014-04-13 14:22:22 +0200
commitd0d8a552b414569b0f8d84f0a4f75bec38da693c (patch)
treef58b20a5e5d35858664bdc9c4f5cd224813d1b13
parentfcb31f29532b541b27e96df31c60a16902db8707 (diff)
downloadguile-d0d8a552b414569b0f8d84f0a4f75bec38da693c.tar.gz
Eval has no more free variables
* module/ice-9/eval.scm (primitive-eval): Expand out the call to make-general-closure, so that make-general-closure becomes well-known. Now eval has no more free variables!
-rw-r--r--module/ice-9/eval.scm11
1 files changed, 8 insertions, 3 deletions
diff --git a/module/ice-9/eval.scm b/module/ice-9/eval.scm
index ef82de453..89d17cd91 100644
--- a/module/ice-9/eval.scm
+++ b/module/ice-9/eval.scm
@@ -508,9 +508,14 @@
(let ((proc
(if (null? tail)
(make-fixed-closure eval nreq body env)
- (if (null? (cdr tail))
- (make-rest-closure eval nreq body env)
- (apply make-general-closure env body nreq tail)))))
+ (mx-bind
+ tail (rest? . tail)
+ (if (null? tail)
+ (make-rest-closure eval nreq body env)
+ (mx-bind
+ tail (nopt kw inits alt)
+ (make-general-closure env body nreq rest?
+ nopt kw inits alt)))))))
(let lp ((meta meta))
(unless (null? meta)
(set-procedure-property! proc (caar meta) (cdar meta))