From: Andy Wingo Date: Sun, 13 Apr 2014 12:22:22 +0000 (+0200) Subject: Eval has no more free variables X-Git-Url: http://git.hcoop.net/bpt/guile.git/commitdiff_plain/d0d8a552b414569b0f8d84f0a4f75bec38da693c 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! --- 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))