From 050ebc37a782f65ea7d305d32d79f1427057787f Mon Sep 17 00:00:00 2001 From: dos-reis Date: Wed, 9 Jun 2010 16:00:43 +0000 Subject: * interp/compiler.boot (canReturn): Handle %when and %bind. (compMatchAlternative): Generate %bind form. (compMatch): Likewise. (compReduce1): Rewrite. (getIdentity): Tidy. * interp/g-opt.boot (changeThrowToExit): HAndle %reduce. (varIsAssigned): %store is side-effectful. * interp/g-util.boot (expandReduce): New. Expand %reduce forms. * interp/i-map.boot (getUserIdentifiersIn): Handle %reduce. (findLocalVars1): Likewise. * interp/i-spec1.boot (checkForFreeVariables): Likewise. --- src/algebra/strap/HOAGG-.lsp | 233 +++++++++++++++++-------------------------- 1 file changed, 92 insertions(+), 141 deletions(-) (limited to 'src/algebra/strap/HOAGG-.lsp') diff --git a/src/algebra/strap/HOAGG-.lsp b/src/algebra/strap/HOAGG-.lsp index a3159838..22fc5a79 100644 --- a/src/algebra/strap/HOAGG-.lsp +++ b/src/algebra/strap/HOAGG-.lsp @@ -45,134 +45,85 @@ (LENGTH (SPADCALL |c| (|getShellEntry| $ 15)))) (DEFUN |HOAGG-;any?;MAB;3| (|f| |c| $) - (PROG (|x| #0=#:G1428 #1=#:G1406 #2=#:G1404 #3=#:G1405) - (RETURN - (SEQ (PROGN - (LETT #3# NIL |HOAGG-;any?;MAB;3|) - (SEQ (LETT |x| NIL |HOAGG-;any?;MAB;3|) - (LETT #0# (SPADCALL |c| (|getShellEntry| $ 15)) - |HOAGG-;any?;MAB;3|) - G190 - (COND - ((OR (ATOM #0#) (PROGN (SETQ |x| (CAR #0#)) NIL)) - (GO G191))) - (PROGN - (LETT #1# (SPADCALL |x| |f|) |HOAGG-;any?;MAB;3|) - (COND - (#3# (LETT #2# (COND (#2# T) ('T #1#)) - |HOAGG-;any?;MAB;3|)) - ('T - (PROGN - (LETT #2# #1# |HOAGG-;any?;MAB;3|) - (LETT #3# 'T |HOAGG-;any?;MAB;3|))))) - (SETQ #0# (CDR #0#)) (GO G190) G191 (EXIT NIL)) - (COND (#3# #2#) ('T NIL))))))) + (LET ((#0=#:G1405 NIL) (#1=#:G1406 T) + (#2=#:G1428 (SPADCALL |c| (|getShellEntry| $ 15)))) + (LOOP + (COND + ((ATOM #2#) (RETURN (COND (#1# NIL) (T #0#)))) + (T (LET ((|x| (CAR #2#))) + (LET ((#3=#:G1404 (SPADCALL |x| |f|))) + (COND (#1# (SETQ #0# #3#)) (T (SETQ #0# (OR #0# #3#)))) + (SETQ #1# NIL))))) + (SETQ #2# (CDR #2#))))) (DEFUN |HOAGG-;every?;MAB;4| (|f| |c| $) - (PROG (|x| #0=#:G1429 #1=#:G1411 #2=#:G1409 #3=#:G1410) - (RETURN - (SEQ (PROGN - (LETT #3# NIL |HOAGG-;every?;MAB;4|) - (SEQ (LETT |x| NIL |HOAGG-;every?;MAB;4|) - (LETT #0# (SPADCALL |c| (|getShellEntry| $ 15)) - |HOAGG-;every?;MAB;4|) - G190 - (COND - ((OR (ATOM #0#) (PROGN (SETQ |x| (CAR #0#)) NIL)) - (GO G191))) - (PROGN - (LETT #1# (SPADCALL |x| |f|) |HOAGG-;every?;MAB;4|) - (COND - (#3# (LETT #2# (COND (#2# #1#) ('T NIL)) - |HOAGG-;every?;MAB;4|)) - ('T - (PROGN - (LETT #2# #1# |HOAGG-;every?;MAB;4|) - (LETT #3# 'T |HOAGG-;every?;MAB;4|))))) - (SETQ #0# (CDR #0#)) (GO G190) G191 (EXIT NIL)) - (COND (#3# #2#) ('T T))))))) + (LET ((#0=#:G1410 NIL) (#1=#:G1411 T) + (#2=#:G1429 (SPADCALL |c| (|getShellEntry| $ 15)))) + (LOOP + (COND + ((ATOM #2#) (RETURN (COND (#1# T) (T #0#)))) + (T (LET ((|x| (CAR #2#))) + (LET ((#3=#:G1409 (SPADCALL |x| |f|))) + (COND + (#1# (SETQ #0# #3#)) + (T (SETQ #0# (AND #0# #3#)))) + (SETQ #1# NIL))))) + (SETQ #2# (CDR #2#))))) (DEFUN |HOAGG-;count;MANni;5| (|f| |c| $) - (PROG (|x| #0=#:G1430 #1=#:G1415 #2=#:G1413 #3=#:G1414) - (RETURN - (SEQ (PROGN - (LETT #3# NIL |HOAGG-;count;MANni;5|) - (SEQ (LETT |x| NIL |HOAGG-;count;MANni;5|) - (LETT #0# (SPADCALL |c| (|getShellEntry| $ 15)) - |HOAGG-;count;MANni;5|) - G190 - (COND - ((OR (ATOM #0#) (PROGN (SETQ |x| (CAR #0#)) NIL)) - (GO G191))) - (COND - ((SPADCALL |x| |f|) - (PROGN - (LETT #1# 1 |HOAGG-;count;MANni;5|) - (COND - (#3# (LETT #2# (+ #2# #1#) - |HOAGG-;count;MANni;5|)) - ('T - (PROGN - (LETT #2# #1# |HOAGG-;count;MANni;5|) - (LETT #3# 'T |HOAGG-;count;MANni;5|))))))) - (SETQ #0# (CDR #0#)) (GO G190) G191 (EXIT NIL)) - (COND (#3# #2#) ('T 0))))))) + (LET ((#0=#:G1414 NIL) (#1=#:G1415 T) + (#2=#:G1430 (SPADCALL |c| (|getShellEntry| $ 15)))) + (LOOP + (COND + ((ATOM #2#) (RETURN (COND (#1# 0) (T #0#)))) + (T (LET ((|x| (CAR #2#))) + (AND (SPADCALL |x| |f|) + (LET ((#3=#:G1413 1)) + (COND + (#1# (SETQ #0# #3#)) + (T (SETQ #0# (+ #0# #3#)))) + (SETQ #1# NIL)))))) + (SETQ #2# (CDR #2#))))) (DEFUN |HOAGG-;members;AL;6| (|x| $) (SPADCALL |x| (|getShellEntry| $ 15))) (DEFUN |HOAGG-;count;SANni;7| (|s| |x| $) (SPADCALL (CONS #'|HOAGG-;count;SANni;7!0| (VECTOR $ |s|)) |x| - (|getShellEntry| $ 31))) + (|getShellEntry| $ 33))) (DEFUN |HOAGG-;count;SANni;7!0| (|#1| $$) (SPADCALL (|getShellEntry| $$ 1) |#1| - (|getShellEntry| (|getShellEntry| $$ 0) 30))) + (|getShellEntry| (|getShellEntry| $$ 0) 32))) (DEFUN |HOAGG-;member?;SAB;8| (|e| |c| $) (SPADCALL (CONS #'|HOAGG-;member?;SAB;8!0| (VECTOR $ |e|)) |c| - (|getShellEntry| $ 33))) + (|getShellEntry| $ 35))) (DEFUN |HOAGG-;member?;SAB;8!0| (|#1| $$) (SPADCALL (|getShellEntry| $$ 1) |#1| - (|getShellEntry| (|getShellEntry| $$ 0) 30))) + (|getShellEntry| (|getShellEntry| $$ 0) 32))) (DEFUN |HOAGG-;=;2AB;9| (|x| |y| $) - (PROG (|b| #0=#:G1432 |a| #1=#:G1431 #2=#:G1422 #3=#:G1420 - #4=#:G1421) - (RETURN - (SEQ (COND - ((SPADCALL |x| (SPADCALL |y| (|getShellEntry| $ 35)) - (|getShellEntry| $ 36)) - (PROGN - (LETT #4# NIL |HOAGG-;=;2AB;9|) - (SEQ (LETT |b| NIL |HOAGG-;=;2AB;9|) - (LETT #0# (SPADCALL |y| (|getShellEntry| $ 15)) - |HOAGG-;=;2AB;9|) - (LETT |a| NIL |HOAGG-;=;2AB;9|) - (LETT #1# (SPADCALL |x| (|getShellEntry| $ 15)) - |HOAGG-;=;2AB;9|) - G190 - (COND - ((OR (ATOM #1#) (PROGN (SETQ |a| (CAR #1#)) NIL) - (ATOM #0#) - (PROGN (SETQ |b| (CAR #0#)) NIL)) - (GO G191))) - (PROGN - (LETT #2# - (SPADCALL |a| |b| (|getShellEntry| $ 30)) - |HOAGG-;=;2AB;9|) - (COND - (#4# (LETT #3# (COND (#3# #2#) ('T NIL)) - |HOAGG-;=;2AB;9|)) - ('T - (PROGN - (LETT #3# #2# |HOAGG-;=;2AB;9|) - (LETT #4# 'T |HOAGG-;=;2AB;9|))))) - (SETQ #1# (PROG1 (CDR #1#) (SETQ #0# (CDR #0#)))) - (GO G190) G191 (EXIT NIL)) - (COND (#4# #3#) ('T T)))) - ('T NIL)))))) + (COND + ((SPADCALL |x| (SPADCALL |y| (|getShellEntry| $ 37)) + (|getShellEntry| $ 38)) + (LET ((#0=#:G1421 NIL) (#1=#:G1422 T) + (#2=#:G1431 (SPADCALL |x| (|getShellEntry| $ 15))) + (#3=#:G1432 (SPADCALL |y| (|getShellEntry| $ 15)))) + (LOOP + (COND + ((OR (ATOM #2#) (ATOM #3#)) (RETURN (COND (#1# T) (T #0#)))) + (T (LET ((|a| (CAR #2#)) (|b| (CAR #3#))) + (LET ((#4=#:G1420 + (SPADCALL |a| |b| (|getShellEntry| $ 32)))) + (COND + (#1# (SETQ #0# #4#)) + (T (SETQ #0# (AND #0# #4#)))) + (SETQ #1# NIL))))) + (SETQ #2# (CDR #2#)) + (SETQ #3# (CDR #3#))))) + ('T NIL))) (DEFUN |HOAGG-;coerce;AOf;10| (|x| $) (SPADCALL @@ -184,16 +135,16 @@ ((ATOM #0#) (RETURN (NREVERSE #1#))) (T (LET ((|a| (CAR #0#))) (SETQ #1# - (CONS (SPADCALL |a| (|getShellEntry| $ 39)) + (CONS (SPADCALL |a| (|getShellEntry| $ 41)) #1#))))) (SETQ #0# (CDR #0#)))) - (|getShellEntry| $ 41)) - (|getShellEntry| $ 42))) + (|getShellEntry| $ 43)) + (|getShellEntry| $ 44))) (DEFUN |HomogeneousAggregate&| (|#1| |#2|) (LET* ((|dv$1| (|devaluate| |#1|)) (|dv$2| (|devaluate| |#2|)) (|dv$| (LIST '|HomogeneousAggregate&| |dv$1| |dv$2|)) - ($ (|newShell| 44)) + ($ (|newShell| 46)) (|pv$| (|buildPredVector| 0 0 (LIST (|HasAttribute| |#1| '|finiteAggregate|) (|HasAttribute| |#1| '|shallowlyMutable|) @@ -218,24 +169,24 @@ (CONS (|dispatchFunction| |HOAGG-;#;ANni;2|) $)) (|setShellEntry| $ 23 (CONS (|dispatchFunction| |HOAGG-;any?;MAB;3|) $)) - (|setShellEntry| $ 24 + (|setShellEntry| $ 26 (CONS (|dispatchFunction| |HOAGG-;every?;MAB;4|) $)) - (|setShellEntry| $ 28 + (|setShellEntry| $ 30 (CONS (|dispatchFunction| |HOAGG-;count;MANni;5|) $)) - (|setShellEntry| $ 29 + (|setShellEntry| $ 31 (CONS (|dispatchFunction| |HOAGG-;members;AL;6|) $)) (COND ((|testBitVector| |pv$| 4) (PROGN - (|setShellEntry| $ 32 - (CONS (|dispatchFunction| |HOAGG-;count;SANni;7|) $)) (|setShellEntry| $ 34 + (CONS (|dispatchFunction| |HOAGG-;count;SANni;7|) $)) + (|setShellEntry| $ 36 (CONS (|dispatchFunction| |HOAGG-;member?;SAB;8|) $)) - (|setShellEntry| $ 37 + (|setShellEntry| $ 39 (CONS (|dispatchFunction| |HOAGG-;=;2AB;9|) $))))) (COND ((|testBitVector| |pv$| 5) - (|setShellEntry| $ 43 + (|setShellEntry| $ 45 (CONS (|dispatchFunction| |HOAGG-;coerce;AOf;10|) $))))))) $)) @@ -244,33 +195,33 @@ (|Equation| 7) (|List| 8) (0 . |eval|) (|Mapping| 7 7) (6 . |map|) (12 . |eval|) (|List| 7) (18 . |parts|) (|NonNegativeInteger|) (23 . |#|) (28 . |#|) (|Boolean|) - (33 . |true|) (37 . |false|) (|Mapping| 19 7) - (41 . |any?|) (47 . |every?|) (53 . |One|) (57 . +) - (63 . |Zero|) (67 . |count|) (73 . |members|) (78 . =) - (84 . |count|) (90 . |count|) (96 . |any?|) - (102 . |member?|) (108 . |#|) (113 . |size?|) (119 . =) - (|OutputForm|) (125 . |coerce|) (|List| $) - (130 . |commaSeparate|) (135 . |bracket|) - (140 . |coerce|)) - '#(|members| 145 |member?| 150 |every?| 156 |eval| 162 - |count| 168 |coerce| 180 |any?| 185 = 191 |#| 197) + (33 . |or|) (39 . |false|) (|Mapping| 19 7) (43 . |any?|) + (49 . |and|) (55 . |true|) (59 . |every?|) (65 . |One|) + (69 . +) (75 . |Zero|) (79 . |count|) (85 . |members|) + (90 . =) (96 . |count|) (102 . |count|) (108 . |any?|) + (114 . |member?|) (120 . |#|) (125 . |size?|) (131 . =) + (|OutputForm|) (137 . |coerce|) (|List| $) + (142 . |commaSeparate|) (147 . |bracket|) + (152 . |coerce|)) + '#(|members| 157 |member?| 162 |every?| 168 |eval| 174 + |count| 180 |coerce| 192 |any?| 197 = 203 |#| 209) 'NIL (CONS (|makeByteWordVec2| 1 'NIL) (CONS '#() (CONS '#() - (|makeByteWordVec2| 43 + (|makeByteWordVec2| 45 '(2 7 0 0 9 10 2 6 0 11 0 12 2 0 0 0 9 13 1 6 14 0 15 1 14 16 0 17 1 0 16 0 - 18 0 19 0 20 0 19 0 21 2 0 19 22 0 23 - 2 0 19 22 0 24 0 16 0 25 2 16 0 0 0 - 26 0 16 0 27 2 0 16 22 0 28 1 0 14 0 - 29 2 7 19 0 0 30 2 6 16 22 0 31 2 0 - 16 7 0 32 2 6 19 22 0 33 2 0 19 7 0 - 34 1 6 16 0 35 2 6 19 0 16 36 2 0 19 - 0 0 37 1 7 38 0 39 1 38 0 40 41 1 38 - 0 0 42 1 0 38 0 43 1 0 14 0 29 2 0 19 - 7 0 34 2 0 19 22 0 24 2 0 0 0 9 13 2 - 0 16 7 0 32 2 0 16 22 0 28 1 0 38 0 - 43 2 0 19 22 0 23 2 0 19 0 0 37 1 0 - 16 0 18))))) + 18 2 19 0 0 0 20 0 19 0 21 2 0 19 22 + 0 23 2 19 0 0 0 24 0 19 0 25 2 0 19 + 22 0 26 0 16 0 27 2 16 0 0 0 28 0 16 + 0 29 2 0 16 22 0 30 1 0 14 0 31 2 7 + 19 0 0 32 2 6 16 22 0 33 2 0 16 7 0 + 34 2 6 19 22 0 35 2 0 19 7 0 36 1 6 + 16 0 37 2 6 19 0 16 38 2 0 19 0 0 39 + 1 7 40 0 41 1 40 0 42 43 1 40 0 0 44 + 1 0 40 0 45 1 0 14 0 31 2 0 19 7 0 36 + 2 0 19 22 0 26 2 0 0 0 9 13 2 0 16 7 + 0 34 2 0 16 22 0 30 1 0 40 0 45 2 0 + 19 22 0 23 2 0 19 0 0 39 1 0 16 0 18))))) '|lookupComplete|)) -- cgit v1.2.3