Finally got tests passing - lambdas work now
parent
70a28abeab
commit
2f4ef55ae5
|
@ -26,14 +26,14 @@ DEFER: funcall
|
||||||
unclip convert-form swap convert-body [ , % funcall ] bake ;
|
unclip convert-form swap convert-body [ , % funcall ] bake ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
: localize-body ( vars body -- newbody )
|
: localize-body ( assoc body -- assoc newbody )
|
||||||
[ dup lisp-symbol? [ tuck name>> swap member? [ name>> make-local ] [ ] if ]
|
[ dup lisp-symbol? [ over dupd [ name>> ] dip at swap or ]
|
||||||
[ dup s-exp? [ body>> localize-body <s-exp> ] [ nip ] if ] if
|
[ dup s-exp? [ body>> localize-body <s-exp> ] when ] if
|
||||||
] with map ;
|
] map ;
|
||||||
|
|
||||||
: localize-lambda ( body vars -- newbody newvars )
|
: localize-lambda ( body vars -- newbody newvars )
|
||||||
dup make-locals dup push-locals [ swap localize-body <s-exp> convert-form ] dipd
|
make-locals dup push-locals swap
|
||||||
pop-locals swap ;
|
[ swap localize-body <s-exp> convert-form swap pop-locals ] dip swap ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue