diff options
Diffstat (limited to 'src/boot/ast.boot')
-rw-r--r-- | src/boot/ast.boot | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/boot/ast.boot b/src/boot/ast.boot index 1e45f7f2..bc444a4e 100644 --- a/src/boot/ast.boot +++ b/src/boot/ast.boot @@ -370,18 +370,12 @@ bfDTuple x == bfCollect(y,itl) == y is ["COLON",a] => a is ['CONS,:.] or a is ['LIST,:.] => - bfDoCollect(a,itl,'lastNode,nil) - bfListReduce('APPEND,['reverse,a],itl) + bfDoCollect(a,itl,'lastNode,'skipNil) + bfDoCollect(['copyList,a],itl,'lastNode,'skipNil) y is ["TUPLE",:.] => - bfListReduce('APPEND,['reverse,bfConstruct y],itl) + bfDoCollect(bfConstruct y,itl,'lastNode,'skipNil) bfDoCollect(['CONS,y,'NIL],itl,'CDR,nil) -bfListReduce(op,y,itl)== - g := bfGenSymbol() - body := ['SETQ,g,[op,y,g]] - extrait := [[[g],[nil],[],[],[],[['reverse!,g]]]] - bfLp2(extrait,itl,body) - bfMakeCollectInsn(expr,prev,head,adv) == firstTime := bfMKPROGN [['SETQ,head,expr],['SETQ,prev,(adv is 'CDR => head; [adv,head])]] |