diff options
author | Andy Wingo <wingo@pobox.com> | 2014-04-13 14:22:22 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2014-04-13 14:22:22 +0200 |
commit | d0d8a552b414569b0f8d84f0a4f75bec38da693c (patch) | |
tree | f58b20a5e5d35858664bdc9c4f5cd224813d1b13 | |
parent | fcb31f29532b541b27e96df31c60a16902db8707 (diff) | |
download | guile-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.scm | 11 |
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)) |