--- compiler.boot.pamphlet 2007-07-10 14:35:20.000000000 -0400 +++ compiler.boot.pamphlet.sxw 2007-07-10 15:20:16.000000000 -0400 @@ -329,39 +329,40 @@ $FUNNAME :local := nil $FUNNAME__TAIL :local := [nil] expandedFunction:=COMP_-TRAN CADR uu - frees:=FreeList(expandedFunction,vl,nil) - where FreeList(u,bound,free) == + frees:=FreeList(expandedFunction,vl,nil,e) + where FreeList(u,bound,free,e) == atom u => not IDENTP u => free MEMQ(u,bound) => free v:=ASSQ(u,free) => RPLACD(v,1+CDR v) free + not getmode(u, e) => free [[u,:1],:free] op:=CAR u MEMQ(op, '(QUOTE GO function)) => free EQ(op,'LAMBDA) => bound:=UNIONQ(bound,CADR u) for v in CDDR u repeat - free:=FreeList(v,bound,free) + free:=FreeList(v,bound,free,e) free EQ(op,'PROG) => bound:=UNIONQ(bound,CADR u) for v in CDDR u | NOT ATOM v repeat - free:=FreeList(v,bound,free) + free:=FreeList(v,bound,free,e) free EQ(op,'SEQ) => for v in CDR u | NOT ATOM v repeat - free:=FreeList(v,bound,free) + free:=FreeList(v,bound,free,e) free EQ(op,'COND) => for v in CDR u repeat for vv in v repeat - free:=FreeList(vv,bound,free) + free:=FreeList(vv,bound,free,e) free if ATOM op then u:=CDR u --Atomic functions aren't descended for v in u repeat - free:=FreeList(v,bound,free) + free:=FreeList(v,bound,free,e) free expandedFunction := --One free can go by itself, more than one needs a vector