From 2f4ef55ae5f270d2368fd21885906f46d6fb154b Mon Sep 17 00:00:00 2001 From: James Cash <james.nvc@gmail.com> Date: Wed, 14 May 2008 02:19:52 -0400 Subject: [PATCH] Finally got tests passing - lambdas work now --- extra/lisp/lisp.factor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extra/lisp/lisp.factor b/extra/lisp/lisp.factor index 52faf59c17..8582021d6d 100644 --- a/extra/lisp/lisp.factor +++ b/extra/lisp/lisp.factor @@ -26,14 +26,14 @@ DEFER: funcall unclip convert-form swap convert-body [ , % funcall ] bake ; <PRIVATE -: localize-body ( vars body -- newbody ) - [ dup lisp-symbol? [ tuck name>> swap member? [ name>> make-local ] [ ] if ] - [ dup s-exp? [ body>> localize-body <s-exp> ] [ nip ] if ] if - ] with map ; +: localize-body ( assoc body -- assoc newbody ) + [ dup lisp-symbol? [ over dupd [ name>> ] dip at swap or ] + [ dup s-exp? [ body>> localize-body <s-exp> ] when ] if + ] map ; : localize-lambda ( body vars -- newbody newvars ) - dup make-locals dup push-locals [ swap localize-body <s-exp> convert-form ] dipd - pop-locals swap ; + make-locals dup push-locals swap + [ swap localize-body <s-exp> convert-form swap pop-locals ] dip swap ; PRIVATE>