aboutsummaryrefslogtreecommitdiff
path: root/src/boot/strap
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-04-28 04:45:25 +0000
committerdos-reis <gdr@axiomatics.org>2011-04-28 04:45:25 +0000
commit9c53b933216af4ae6c7233384ace756572dcb597 (patch)
tree37fe3f4c12745a5c0d81f8fe2155708d54cfa6fc /src/boot/strap
parent0df2bba385eeeaf650b6c13b2f4b10f991929ec8 (diff)
downloadopen-axiom-9c53b933216af4ae6c7233384ace756572dcb597.tar.gz
* boot/ast.boot (bfReduceCollect): Delegate to bfDoCollect if
op is append or append!.
Diffstat (limited to 'src/boot/strap')
-rw-r--r--src/boot/strap/ast.clisp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/boot/strap/ast.clisp b/src/boot/strap/ast.clisp
index c4249a0d..9597b66d 100644
--- a/src/boot/strap/ast.clisp
+++ b/src/boot/strap/ast.clisp
@@ -484,9 +484,16 @@
((AND (CONSP |op|) (EQ (CAR |op|) 'QUOTE))
(CADR |op|))
(T |op|)))
- (SETQ |op| (|bfReName| |a|))
- (SETQ |init| (OR (GET |a| 'SHOETHETA) (GET |op| 'SHOETHETA)))
- (|bfOpReduce| |op| |init| |body| |itl|))
+ (COND
+ ((EQ |a| '|append!|)
+ (|bfDoCollect| |body| |itl| '|lastNode| '|skipNil|))
+ ((EQ |a| '|append|)
+ (|bfDoCollect| (LIST '|copyList| |body|) |itl| '|lastNode|
+ '|skipNil|))
+ (T (SETQ |op| (|bfReName| |a|))
+ (SETQ |init|
+ (OR (GET |a| 'SHOETHETA) (GET |op| 'SHOETHETA)))
+ (|bfOpReduce| |op| |init| |body| |itl|))))
(T (SETQ |seq|
(COND ((NULL |y|) (|bfTuple| NIL)) (T (CADR |y|))))
(|bfReduce| |op| (|bfTupleConstruct| |seq|)))))))