(FILECREATED "27-Jan-86 17:35:39" ("compiled on " {ERIS}LIBRARY>CMLSEQ.;14) "22-Jan-86 18:59:55" tcompl'd in "Xerox Lisp 22-Jan-86 ..." dated "22-Jan-86 19:14:15") (FILECREATED "27-Jan-86 17:32:42" {ERIS}LIBRARY>CMLSEQ.;14 133808 changes to: (MACROS SEQ-DISPATCH SUBST-DISPATCH) (FNS MAKE-SEQUENCE-OF-TYPE CL:ELT CL:\SETELT MAKE-SEQUENCE REDUCE NSUBSTITUTE NSUBSTITUTE-IF NSUBSTITUTE-IF-NOT) previous date: "24-Jan-86 15:51:11" {ERIS}LIBRARY>CMLSEQ.;13) MAKE-SEQUENCE-OF-TYPE D1 (L (1 CL:LENGTH 0 TYPE)) @d @HdgA gHdgAgo gHdgA gA HgHgHdg@@Ag@ gHgAgo o@ (223Q CL:ERROR 212Q MAKE-ARRAY 163Q MAKE-ARRAY 115Q MAKE-ARRAY 103Q MAKE-STRING 61Q MAKE-ARRAY 30Q MAKE-LIST 4 CL:ATOM) (203Q :ELEMENT-TYPE 175Q SIMPLE-BIT-VECTOR 167Q BIT-VECTOR 155Q :ELEMENT-TYPE 137Q VECTOR 130Q SIMPLE-ARRAY 122Q ARRAY 107Q SIMPLE-VECTOR 74Q SIMPLE-STRING 65Q STRING 52Q :ELEMENT-TYPE 43Q SIMPLE-BIT-VECTOR 34Q BIT-VECTOR 21Q LIST) ( 217Q "~S is a bad type specifier for sequence functions." 207Q (MOD 2) 56Q (MOD 2)) CL:ELT D1 (L (1 INDEX 0 SEQUENCE)) B@@d7jAoA AHj @@d oA bHkXA (77Q AREF 60Q CL:ERROR 46Q CL:ATOM 35Q %%= 23Q CL:ERROR) NIL ( 54Q "~S: index too large." 17Q "~S: index too small.") CL:\SETELT D1 (L (2 NEWVAL 1 INDEX 0 SEQUENCE)) E@@9jAoA A@Hj IB@Id oA YHkXB@A (102Q ASET 62Q CL:ERROR 50Q CL:ATOM 34Q %%= 21Q CL:ERROR) NIL ( 56Q "~S: index too large." 15Q "~S: index too small.") LIST-LENGTH* D1 (L (0 SEQUENCE)) j@d HbHkԸ(10Q CL:ATOM) NIL () MAKE-SEQUENCE D1 (L (0 \CL:LAMBDA.ARGCNT) P 11Q VAL P 10Q STRING P 7 INDEX P 6 A0015 P 5 INITIAL-ELEMENT P 2 CL:LENGTH P 1 TYPE)  elHoH @A2HlLdKhdagLkذLl\aI IINdgJgM gNdgJMAjJ OJ OO OOOM Ok_oOg _J gJgM NgNgNdgIIJgIgM gNgJgogM oI (413Q CL:ERROR 402Q MAKE-ARRAY 345Q MAKE-ARRAY 272Q MAKE-ARRAY 254Q MAKE-STRING 244Q \CHECK-TYPE-FAIL 217Q SCHARSET 167Q %%= 156Q MAKE-STRING 127Q MAKE-LIST 77Q CL:ATOM 20Q ERROR) (375Q :INITIAL-ELEMENT 366Q :ELEMENT-TYPE 357Q SIMPLE-BIT-VECTOR 351Q BIT-VECTOR 340Q :INITIAL-ELEMENT 332Q :ELEMENT-TYPE 314Q SIMPLE-ARRAY 305Q VECTOR 277Q ARRAY 266Q :INITIAL-ELEMENT 260Q SIMPLE-VECTOR 241Q SIMPLE-STRING 142Q STRING 133Q SIMPLE-STRING 123Q :INITIAL-ELEMENT 114Q LIST 53Q :INITIAL-ELEMENT) ( 407Q "~S is a bad type specifier for sequences." 372Q (MOD 2) 234Q "value" 14Q "Too few args") VECTOR-SUBSEQ* D1 (L (0 \CL:LAMBDA.ARGCNT) P 6 COPY P 5 NEW-INDEX P 4 OLD-INDEX P 3 END P 2 START P 1 SEQUENCE) aelHoH HloH @AlHhB[I JjI KJ LK NIL NM LkMkԽ\(124Q ASET 117Q AREF 107Q %%= 77Q MAKE-SEQUENCE-OF-TYPE 71Q TYPE-OF 62Q CL:LENGTH 36Q ERROR 20Q ERROR) NIL ( 32Q "Too many args" 14Q "Too few args") LIST-SUBSEQ* D1 (L (0 \CL:LAMBDA.ARGCNT) P 10Q INDEX P 7 SPLICE P 6 LIST P 5 RESULT P 4 GROVELED P 3 END P 2 START P 1 SEQUENCE) w elHoH HloH @AlHhB[+JI LhLdMJkN KOK MJhNOdN&Ok__^(125Q %%= 114Q CL:ATOM 64Q NTHCDR 36Q ERROR 20Q ERROR) NIL ( 32Q "Too many args" 14Q "Too few args") SUBSEQ D1 (L (0 \CL:LAMBDA.ARGCNT) P 3 END P 2 START P 1 SEQUENCE) AelHoH HloH @AlHhBIddJK JK (76Q VECTOR-SUBSEQ* 70Q LIST-SUBSEQ* 36Q ERROR 20Q ERROR) NIL ( 32Q "Too many args" 14Q "Too few args") COPY-SEQ D1 (L (0 SEQUENCE)) @dd  (14Q VECTOR-COPY-SEQ* 10Q LIST-COPY-SEQ*) NIL () LIST-COPY-SEQ* D1 (L (0 SEQUENCE)) +@d hh!@HYd IJIHJdI&(26Q CL:ATOM 4 CL:ATOM) NIL () VECTOR-COPY-SEQ* D1 (L (0 SEQUENCE)) C@H H !j@ H YH JoHg X@I JI Ik԰(73Q ASET 66Q AREF 56Q \CHECK-TYPE-FAIL 40Q %%= 32Q MAKE-SEQUENCE-OF-TYPE 26Q TYPE-OF 16Q CL:LENGTH 7 VECTORP) (53Q VECTOR) ( 47Q "value") LIST-FILL* D1 (L (3 END 2 START 1 ITEM 0 SEQUENCE)) -C@ bB@ BH IC @HAHIkԹX(33Q %%= 25Q CL:ATOM 15Q NTHCDR 5 CL:LENGTH) NIL () VECTOR-FILL* D1 (L (3 END 2 START 1 ITEM 0 SEQUENCE)) #C@ bBHC @A@H HkX(32Q ASET 21Q %%= 5 CL:LENGTH) NIL () FILL D1 (L (0 \CL:LAMBDA.ARGCNT) P 10Q END P 5 START P 2 ITEM P 1 SEQUENCE) elHoH @AbHlLdKhjagLkذLl\aHl_OdNhdagOkذOl_a_IddJMO JMO (175Q VECTOR-FILL* 165Q LIST-FILL* 20Q ERROR) (123Q :END 53Q :START) ( 14Q "Too few args") LIST-REPLACE-FROM-LIST* D1 (L (5 SOURCE-END 4 SOURCE-START 3 TARGET-END 2 TARGET-START 1 SOURCE-SEQUENCE 0 TARGET-SEQUENCE)) ~C@ bEA b @A2BdD-ADdCBED B@ H@IHHIXBDB@ DA HC IE JK@JKHkIkJKX(140Q %%= 132Q %%= 122Q NTHCDR 115Q NTHCDR 62Q NTHCDR 55Q SUBSEQ 51Q MIN 16Q CL:LENGTH 5 CL:LENGTH) NIL () LIST-REPLACE-FROM-VECTOR* D1 (L (5 SOURCE-END 4 SOURCE-START 3 TARGET-END 2 TARGET-START 1 SOURCE-SEQUENCE 0 TARGET-SEQUENCE)) BC@ bEA b BDB@ HC IE J@AI HkIkJX(61Q AREF 46Q %%= 40Q %%= 30Q NTHCDR 16Q CL:LENGTH 5 CL:LENGTH) NIL () VECTOR-REPLACE-FROM-LIST* D1 (L (5 SOURCE-END 4 SOURCE-START 3 TARGET-END 2 TARGET-START 1 SOURCE-SEQUENCE 0 TARGET-SEQUENCE)) BC@ bEA b BDdA HC IE J@@H HkIkJX(62Q ASET 46Q %%= 40Q %%= 30Q NTHCDR 16Q CL:LENGTH 5 CL:LENGTH) NIL () VECTOR-REPLACE-FROM-VECTOR* D1 (L (5 SOURCE-END 4 SOURCE-START 3 TARGET-END 2 TARGET-START 1 SOURCE-SEQUENCE 0 TARGET-SEQUENCE)) }C@ bEA b @A?BdD:CBED !BHmDHmԺYBk @AJ @I IkJkհBDHC IE @AI @H HkIkԹX(160Q ASET 153Q AREF 143Q %%= 135Q %%= 112Q ASET 105Q AREF 75Q %%= 46Q MIN 16Q CL:LENGTH 5 CL:LENGTH) NIL () CL:REPLACE D1 (L (0 \CL:LAMBDA.ARGCNT) P 40Q SOURCE-INDEX P 37Q TARGET-INDEX P 36Q SOURCE-INDEX P 35Q TARGET-INDEX P 34Q NELTS P 33Q SOURCE-SEQUENCE P 32Q SOURCE-INDEX P 31Q TARGET-INDEX P 30Q TARGET-SEQUENCE-REF P 27Q SOURCE-INDEX P 26Q TARGET-INDEX P 25Q SOURCE-SEQUENCE-REF P 24Q TARGET-SEQUENCE-REF P 23Q SOURCE-INDEX P 22Q TARGET-INDEX P 21Q NEW-ELTS P 16Q SOURCE-END P 13Q SOURCE-START P 10Q TARGET-END P 5 TARGET-START P 2 SOURCE-SEQUENCE P 1 TARGET-SEQUENCE) !elHoH @AHlLdKhjagLkذLl\aHl_OdNhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl__OdOhdagOkذOl_a_OI _OJ _IIJJIJ?MdO9JOdOMOO O"MI _ _IO OOO MOMI OJ O$O O&O O(O*IO(O*O$kO&kO(O*_*_(_&_$MOMI O,O O.O O0IJO. O,kO.kO0_0_._,JJ@MOdJ O2O O4O O6IIO2 O2kO4kO6_6_4_2IJRMdOLOMOO MO8mOO8mO:Mk IJO< IO: O:kOO O@O IJO@ IO> O>kO@k_@_>(1164Q ASET 1156Q AREF 1145Q %%= 1135Q %%= 1100Q ASET 1072Q AREF 1061Q %%= 1024Q MIN 745Q ASET 727Q %%= 717Q %%= 705Q NTHCDR 640Q AREF 623Q %%= 613Q %%= 601Q NTHCDR 516Q %%= 506Q %%= 474Q NTHCDR 466Q NTHCDR 427Q NTHCDR 415Q SUBSEQ 411Q MIN 331Q CL:LENGTH 317Q CL:LENGTH 20Q ERROR) (263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 14Q "Too few args") CL:REVERSE D1 (L (0 SEQUENCE)) @dd  (14Q VECTOR-REVERSE* 10Q LIST-REVERSE*) NIL () LIST-REVERSE* D1 (L (0 SEQUENCE)) @d H@bH(7 CL:ATOM) NIL () VECTOR-REVERSE* D1 (L (0 SEQUENCE)) 4@ jHk@ H IH K@J KI IkJkպY(47Q ASET 42Q AREF 32Q %%= 22Q MAKE-SEQUENCE-OF-TYPE 16Q TYPE-OF 3 CL:LENGTH) NIL () LIST-NREVERSE* D1 (L (0 SEQUENCE)) #@@Id JJHd HHI(25Q CL:ATOM 12Q CL:ATOM) NIL () VECTOR-NREVERSE* D1 (L (0 SEQUENCE)) N@H H jHkHl IK @oHg X@I @J IkJkպY(101Q ROTATEF 76Q AREF 71Q AREF 61Q \CHECK-TYPE-FAIL 43Q %%= 33Q TRUNCATE 16Q CL:LENGTH 7 VECTORP) (56Q VECTOR) ( 52Q "value") CL:NREVERSE D1 (L (0 SEQUENCE)) @dd  (14Q VECTOR-NREVERSE* 10Q LIST-NREVERSE*) NIL () CONCATENATE D1 (L (0 \CL:LAMBDA.ARGCNT) P 14Q CNT P 13Q FN P 12Q CNT P 11Q FN P 10Q A0042 P 2 SEQUENCES P 1 OUTPUT-TYPE-SPEC) ekHoH @Hl2LdKMI Ia_NOh^Lk\O&IOdg+gj JdOk_lPhl4 OOg8Og0Og(Og OgOgOgOg+gk IJdOk_lPhl4 OOoI (351Q CL:ERROR 327Q \LISPERROR 162Q \LISPERROR 47Q CL:ATOM 17Q ERROR) (273Q CONCAT-TO-SIMPLE* 265Q SIMPLE-BIT-VECTOR 256Q BIT-VECTOR 247Q SIMPLE-ARRAY 237Q ARRAY 227Q STRING 217Q VECTOR 207Q SIMPLE-STRING 177Q SIMPLE-VECTOR 127Q CONCAT-TO-LIST* 120Q LIST) ( 345Q "~S: invalid output type specification." 13Q "Too few args") CONCAT-TO-LIST* D1 (L (0 \CL:LAMBDA.ARGCNT) P 15Q SEQUENCE P 14Q CL:LENGTH P 13Q INDEX P 12Q SEQUENCE P 11Q SPLICE P 10Q SEQUENCES P 7 RESULT P 6 SEQUENCES) eHk2JdIKhh_NO OOaL Mh\JkZM& Od jO  OO +O_ O OdO&_O_OdOO &_Ok_(216Q AREF 154Q CL:ATOM 131Q %%= 117Q CL:LENGTH) NIL () CONCAT-TO-SIMPLE* D1 (L (0 \CL:LAMBDA.ARGCNT) P 22Q CL:LENGTH P 21Q SEQUENCE P 20Q JNDEX P 17Q SEQUENCE P 16Q RESULT P 15Q INDEX P 14Q LENGTHS P 13Q SEQUENCES P 12Q LENGTHS P 11Q TOTAL-LENGTH P 10Q SEQS P 7 SEQUENCES P 1 OUTPUT-TYPE-SPEC) ekHoH @Hl2KdJ0LOj OOOjIO OO OaM Nh]Kk[N&OOd# jO O 8OO__O" O"OO Ok_O"_"OO OO Ok_O k_  OO$h _OO$_O_;(343Q \NCONC2 327Q CL:LENGTH 303Q ASET 274Q AREF 243Q ASET 227Q CL:ATOM 175Q %%= 111Q %%= 77Q MAKE-SEQUENCE-OF-TYPE 17Q ERROR) NIL ( 13Q "Too few args") CL:MAPA0001 D1 (L (0 SEQ) F 0 INDEX) @P (4 CL:ELT) NIL () CL:MAPA0002 D1 (L (0 SEQ) F 0 INDEX) @P (4 CL:ELT) NIL () CL:MAPA0003 D1 (L (0 SEQ) F 0 INDEX) @P (4 CL:ELT) NIL () CL:MAP D1 (L (0 \CL:LAMBDA.ARGCNT) P 40Q CNT P 37Q FN P 36Q RESULT P 35Q INDEX P 34Q MIN-LENGTH P 33Q SEQS P 32Q CNT P 31Q FN P 30Q SPLICE P 27Q INDEX P 26Q RESULT P 25Q MIN-LENGTH P 24Q SEQS P 23Q CNT P 22Q FN P 21Q INDEX P 20Q MIN-LENGTH P 17Q SEQS P 16Q A0051 P 5 SEQUENCES P 4 MORE-SEQUENCES P 3 FIRST-SEQUENCE P 2 FUNCTION P 1 OUTPUT-TYPE-SPEC) !elHoH @ABSHl2 OdOOKLI &I%a_OOh__Ok_O&_IOeLK ODjO"O hJjgM dO&k_&lPhl4 O&O$O"k_" O NN_ O_g|LK O(dVhjO,O.O* O,O0dJjgM dO4k_4lPhl4 O4O2&_0O.k_. _O*OO_*O(_(Og8Og0Og(Og OgOgOgOgxLK O6SjIO8 O:O8 O<Jj gM dO@k_@lPhl4 O@O>OO O@O@JO> lI_@O>k_>(1214Q AREF 1200Q %%= 1150Q AREF 1117Q AREF 1103Q %%= 1053Q AREF 1040Q SLISP-ARRAY-P 1012Q AREF 1000Q %%= 751Q AREF 707Q AREF 675Q %%= 646Q AREF 624Q SLISP-ARRAY-P 554Q %%= 505Q NTHCDR 440Q %%= 371Q NTHCDR 366Q CL:REVERSE 357Q CL:LENGTH 322Q %%= 200Q CL:LENGTH 20Q ERROR) (266Q :INITIAL-VALUE 206Q :END 123Q :START 53Q :FROM-END) ( 14Q "Too few args") CL:COERCE D1 (L (1 OUTPUT-TYPE-SPEC 0 OBJECT) F 10Q *) @A @Ag@ @d3>AHgHgHgHdg@go o@A qHlHdoZAd AYgIdg@ gIdg@ gIgIgIg@A o@A JAd AZdg@ gWJgJgJgJg@A o@A Hd AAd A[dggKgKgKgKgo@A  ^Ad A\dgmgLdg@ gLdg@ ghLg_LgVo@A HdYAd A]dg dg@ dggMg MgMgo@A  XAd A^dggNdg@ gNgNgNgo@A H mAd A_dgRgOdggOdggKOgAOg7Og-o@A o@ (1342Q CL:ERROR 1331Q CL:ERROR 1164Q CL:ATOM 1155Q VECTORP 1150Q CL:ERROR 1073Q BIT-VECTOR-TO-SIMPLE-BIT-VECTOR* 1030Q CL:ATOM 1021Q BIT-VECTOR-P 1015Q CL:ERROR 727Q STRING-TO-SIMPLE-STRING* 675Q CL:ATOM 660Q CL:ERROR 614Q VECTOR-TO-BIT-VECTOR* 572Q VECTOR-TO-STRING* 532Q CL:ATOM 523Q SIMPLE-VECTOR-P 517Q CL:ERROR 427Q CL:ATOM 417Q SIMPLE-BIT-VECTOR-P 411Q CL:ERROR 377Q VECTOR-TO-VECTOR* 330Q VECTOR-TO-LIST* 307Q CL:ATOM 275Q CL:ERROR 263Q LIST-TO-VECTOR* 225Q LIST-TO-BIT-VECTOR* 203Q LIST-TO-STRING* 154Q CL:ATOM 123Q CL:ERROR 111Q CL:ERROR 21Q CHARACTER 4 TYPEP) (1313Q SIMPLE-ARRAY 1301Q ARRAY 1267Q VECTOR 1255Q SIMPLE-VECTOR 1245Q BIT-VECTOR 1232Q SIMPLE-BIT-VECTOR 1222Q STRING 1207Q SIMPLE-STRING 1177Q LIST 1132Q SIMPLE-ARRAY 1121Q ARRAY 1110Q VECTOR 1077Q SIMPLE-VECTOR 1064Q SIMPLE-BIT-VECTOR 1052Q * 1042Q LIST 777Q ARRAY 766Q SIMPLE-ARRAY 755Q VECTOR 744Q SIMPLE-VECTOR 734Q * 720Q SIMPLE-STRING 707Q LIST 642Q SIMPLE-ARRAY 631Q ARRAY 620Q VECTOR 605Q BIT-VECTOR 576Q SIMPLE-BIT-VECTOR 563Q STRING 554Q SIMPLE-STRING 544Q LIST 503Q SIMPLE-ARRAY 474Q ARRAY 465Q VECTOR 456Q SIMPLE-VECTOR 447Q * 441Q LIST 370Q SIMPLE-ARRAY 362Q ARRAY 354Q VECTOR 345Q SIMPLE-VECTOR 334Q * 321Q LIST 254Q SIMPLE-ARRAY 246Q ARRAY 240Q VECTOR 231Q SIMPLE-VECTOR 216Q BIT-VECTOR 207Q SIMPLE-BIT-VECTOR 174Q STRING 165Q SIMPLE-STRING 100Q COMPLEX 74Q FLOATP 65Q LONG-FLOAT 56Q DOUBLE-FLOAT 50Q SINGLE-FLOAT 41Q SHORT-FLOAT 13Q CHARACTER) ( 1336Q "~S is an inappropriate type of object for coerce." 1324Q "Can't coerce ~S to type ~S." 1143Q "Can't coerce ~S to type ~S." 1010Q "Can't coerce ~S to type ~S." 653Q "Can't coerce ~S to type ~S." 512Q "Can't coerce ~S to type ~S." 404Q "Can't coerce ~S to type ~S." 270Q "Can't coerce ~S to type ~S." 143Q (NIL) 116Q "~S can't be converted to type ~S." 106Q "Complex numbers not supported in current implementation.") LIST-TO-STRING* D1 (L (0 OBJECT)) )j!@ Y HI JJH@@b HkX(40Q SCHARSET 21Q %%= 13Q MAKE-STRING 7 LIST-LENGTH*) NIL () LIST-TO-BIT-VECTOR* D1 (L (0 OBJECT)) 0j!@ Ygo HI JJH@@b HkX(47Q SBITSET 30Q %%= 22Q MAKE-ARRAY 7 LIST-LENGTH*) (13Q :ELEMENT-TYPE) ( 17Q (MOD 2)) LIST-TO-VECTOR* D1 (L (1 TYPE 0 OBJECT)) +j!@ AI HI J@@bJH HkX(42Q ASET 23Q %%= 15Q MAKE-SEQUENCE-OF-TYPE 7 LIST-LENGTH*) NIL () VECTOR-TO-LIST* D1 (L (0 OBJECT)) &hh@ "jHZI HK@J &JkK(33Q AREF 21Q %%= 6 CL:LENGTH) NIL () VECTOR-TO-VECTOR* D1 (L (1 TYPE 0 OBJECT)) )j!@ AI HI J@H JH HkX(40Q ASET 33Q AREF 23Q %%= 15Q MAKE-SEQUENCE-OF-TYPE 7 CL:LENGTH) NIL () VECTOR-TO-STRING* D1 (L (0 OBJECT)) 'j!@ Y HI JJH@H HkX(36Q SCHARSET 33Q AREF 21Q %%= 13Q MAKE-STRING 7 CL:LENGTH) NIL () VECTOR-TO-BIT-VECTOR* D1 (L (0 OBJECT)) .j!@ Ygo HI JJH@H HkX(45Q SBITSET 42Q AREF 30Q %%= 22Q MAKE-ARRAY 7 CL:LENGTH) (13Q :ELEMENT-TYPE) ( 17Q (MOD 2)) STRING-TO-SIMPLE-STRING* D1 (L (0 OBJECT)) -@d @ !H jZH IIJ @J Jk԰(45Q ASET 40Q AREF 30Q %%= 21Q ALLOCSTRING 12Q CL:LENGTH 4 SIMPLE-STRING-P) NIL () BIT-VECTOR-TO-SIMPLE-BIT-VECTOR* D1 (L (0 OBJECT)) 3@d @ !Hgg jZH IIJ @J Jk԰(53Q ASET 46Q AREF 36Q %%= 27Q MAKE-ARRAY 12Q CL:LENGTH 4 SIMPLE-BIT-VECTOR-P) (24Q BIT 21Q :ELEMENT-TYPE) () CL:DELETE D1 (L (0 \CL:LAMBDA.ARGCNT) P 67Q JNDEX P 66Q * P 65Q INDEX P 64Q NUMBER-ZAPPED P 63Q JNDEX P 62Q INDEX P 61Q JNDEX P 60Q * P 57Q INDEX P 56Q JNDEX P 55Q INDEX P 54Q * P 53Q LOSERS P 52Q THIS-ELEMENT P 51Q LOSERS P 50Q TERMINUS P 47Q NUMBER-ZAPPED P 46Q * P 45Q INDEX P 44Q NUMBER-ZAPPED P 43Q INDEX P 42Q PREVIOUS P 41Q CURRENT P 40Q HANDLE P 37Q NUMBER-ZAPPED P 36Q INDEX P 35Q PREVIOUS P 34Q CURRENT P 33Q HANDLE P 32Q CL:REVERSE P 31Q VAL P 30Q CL:LENGTH P 27Q KEY P 26Q CL:COUNT P 25Q END P 16Q START P 13Q TEST-NOT P 10Q TEST P 5 FROM-END P 2 SEQUENCE P 1 ITEM) ;8elHoH @A0HlLdKhdagLkذLl\aHl_OdNhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl_ _O dOhJ agO kذO l_ a!Hl_$_"O$dO"hnagO$kذO$l_$a_,Hl_(_&O(dO&hgagO(kذO(l_(a_.J JJ2MJO2dlO2oDO2 hO4O0O*O4 O0O*O6 OjOO, O6 oO2g _2OIO8kO.lOhIO8kO.lOO:O8O>k_>O:_:O8OOD OBO" OFoOd(OJONO =ONoOP+ORO$ JOV JOR JOV ORkOTOVk_V_T_RJON JOP ONOJ OJ_JOPk_POLONk_N_LJO> _HkOkIOBk_BO>OF_FO>k_>COdj.OXO O\O" =OXoOZ1O^O$ JOb JO^ JOb O^kO`Obk_b_`_^JOX JOZ JOX kOkIO\k_\OZk_ZOXk_X(1510Q AREF 1501Q ASET 1473Q AREF 1440Q ASET 1432Q AREF 1423Q SHRINK-VECTOR 1414Q %%= 1370Q %%= 1360Q %%= 1276Q AREF 1233Q %%= 1222Q ASET 1214Q AREF 1161Q ASET 1153Q AREF 1144Q SHRINK-VECTOR 1135Q %%= 1111Q %%= 1057Q %%= 1047Q %%= 725Q %%= 715Q %%= 700Q NTHCDR 671Q NTHCDR 571Q \CHECK-TYPE-FAIL 554Q CL:NREVERSE 544Q %%= 534Q %%= 517Q NTHCDR 505Q NTHCDR 461Q CL:NREVERSE 403Q CL:LENGTH 262Q CL:LENGTH 20Q ERROR) (566Q LIST 352Q :CL:COUNT 270Q :END 205Q :KEY 177Q IDENTITY 123Q :START 53Q :FROM-END) ( 1400Q " copy the rest of the vector" 1121Q " copy the rest of the vector" 1071Q " delete the losers" 1030Q " find the losers" 561Q "value" 450Q (NIL) 14Q "Too few args") DELETE-IF-NOT D1 (L (0 \CL:LAMBDA.ARGCNT) P 61Q JNDEX P 60Q * P 57Q INDEX P 56Q NUMBER-ZAPPED P 55Q JNDEX P 54Q INDEX P 53Q JNDEX P 52Q * P 51Q INDEX P 50Q JNDEX P 47Q INDEX P 46Q * P 45Q LOSERS P 44Q THIS-ELEMENT P 43Q LOSERS P 42Q TERMINUS P 41Q NUMBER-ZAPPED P 40Q * P 37Q INDEX P 36Q NUMBER-ZAPPED P 35Q INDEX P 34Q PREVIOUS P 33Q CURRENT P 32Q HANDLE P 31Q NUMBER-ZAPPED P 30Q INDEX P 27Q PREVIOUS P 26Q CURRENT P 25Q HANDLE P 24Q CL:REVERSE P 23Q VAL P 22Q CL:LENGTH P 21Q CL:COUNT P 20Q KEY P 17Q END P 10Q START P 5 FROM-END P 2 SEQUENCE P 1 PREDICATE) k2elHoH @AHlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a_Hl__OdOhJ agOkذOl_a!Hl__OdOhgagOkذOl_a_ Hl__OdOhnagOkذOl_a_"J JJMJO&dlO&oDO& hO(O$OO( O$OO* OjO0O O2O" O* oO&g _&O,kO kIO.O,O2k_2O._.O,O0k_0_,JOJ OO4 OjO:O OOD OBO" OFoOd(OJONO =ONoOP+ORO$ JOV JOR JOV ORkOTOVk_V_T_RJON JOP ONOJ OJ_JOPk_POLONk_N_LJO> _HkO kIOBk_BO>OF_FO>k_>COdj.OXO O\O" =OXoOZ1O^O$ JOb JO^ JOb O^kO`Obk_b_`_^JOX JOZ JOX kO kIO\k_\OZk_ZOXk_X(1510Q AREF 1501Q ASET 1473Q AREF 1440Q ASET 1432Q AREF 1423Q SHRINK-VECTOR 1414Q %%= 1370Q %%= 1360Q %%= 1276Q AREF 1233Q %%= 1222Q ASET 1214Q AREF 1161Q ASET 1153Q AREF 1144Q SHRINK-VECTOR 1135Q %%= 1111Q %%= 1057Q %%= 1047Q %%= 725Q %%= 715Q %%= 700Q NTHCDR 671Q NTHCDR 571Q \CHECK-TYPE-FAIL 554Q CL:NREVERSE 544Q %%= 534Q %%= 517Q NTHCDR 505Q NTHCDR 461Q CL:NREVERSE 403Q CL:LENGTH 200Q CL:LENGTH 20Q ERROR) (566Q LIST 352Q :CL:COUNT 270Q :KEY 262Q IDENTITY 206Q :END 123Q :START 53Q :FROM-END) ( 1400Q " copy the rest of the vector" 1121Q " copy the rest of the vector" 1071Q " delete the losers" 1030Q " find the losers" 561Q "value" 450Q (NIL) 14Q "Too few args") CL:REMOVE D1 (L (0 \CL:LAMBDA.ARGCNT) P 102Q NEW-INDEX P 101Q INDEX P 100Q THIS-ELEMENT P 77Q NUMBER-ZAPPED P 76Q NEW-INDEX P 75Q RESULT P 74Q INDEX P 73Q RESULT P 72Q INDEX P 71Q JNDEX P 70Q * P 67Q INDEX P 66Q JNDEX P 65Q INDEX P 64Q * P 63Q LOSERS P 62Q THIS-ELEMENT P 61Q LOSERS P 60Q TERMINUS P 57Q NUMBER-ZAPPED P 56Q * P 55Q INDEX P 54Q SEQUENCE P 53Q THIS-ELEMENT P 52Q NUMBER-ZAPPED P 51Q INDEX P 50Q RESULTS P 47Q BEFORE-START P 46Q INDEX P 45Q SPLICE P 44Q VAL P 43Q INDEX P 42Q THIS-ELEMENT P 41Q NUMBER-ZAPPED P 40Q INDEX P 37Q RESULTS P 36Q BEFORE-START P 35Q INDEX P 34Q SPLICE P 33Q SEQUENCE P 32Q VAL P 31Q CL:LENGTH P 30Q KEY P 27Q CL:COUNT P 26Q END P 16Q START P 13Q TEST-NOT P 10Q TEST P 5 FROM-END P 2 SEQUENCE P 1 ITEM) CelHoH @A@HlLdKhdagLkذLl\aHl_OdNhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl_ _O dOhJ agO kذO l_ a!Hl_$_"O$dO"hnagO$kذO$l_$a_.Hl_(_&O(dO&hgagO(kذO(l_(a_0J JJMJO4dlO4ogO4 hhjO8O:O ZO<Oj"O@O, OBO. O@#O6\O>$OHdlOHo4OH oO4g _4}O8dO6O6_6&_8O:k_:oOHg _HO8dO6O6_6&_8OFk_FO6O6_6_DOIODkO0lOIODkO0lOhO8dOD&_8OBk_BO@k_@)h%jOJ'OLO +ON(Oj+ORO, OTO. 8OR_*JOPOJdJJ&_JOLk_LOJdJJ&_JO*k԰JJ_VOIOVkO0lOIOVkO0lOhOJdOV&_JOTk_TORk_RwMJ ,O,kojOk$2OZO` O^O. OboOd6OfOjO, @OjoOl9OnO2 OXOr OXOn OXOr OnkOpOrk_r_p_nOXOj OXOl OjOf Of_fOlk_lOhOjk_j_hOXOZ _dOIOdkO0lOIOdkO0lOhO^k_^OZOb_bOZk_Z#OjJ O2 ;OtO 4OvOj@OxO, O~O. MOxO|BOO2 OzO JOt OvOt Otk_tJO OzO OkOk__JOx _OIOkO0lOIOkO0lOhOOzO| O|k_|O~k_~Oxk_xZ(2365Q ASET 2305Q AREF 2257Q ASET 2250Q AREF 2231Q ASET 2222Q AREF 2213Q SHRINK-VECTOR 2202Q %%= 2162Q %%= 2152Q %%= 2130Q %%= 2116Q MAKE-SEQUENCE-OF-TYPE 2111Q TYPE-OF 2004Q AREF 1740Q %%= 1727Q ASET 1720Q AREF 1664Q ASET 1655Q AREF 1645Q SHRINK-VECTOR 1635Q %%= 1611Q %%= 1557Q %%= 1547Q %%= 1515Q COPY-SEQ 1305Q %%= 1275Q %%= 1250Q %%= 1054Q \CHECK-TYPE-FAIL 1001Q \CHECK-TYPE-FAIL 764Q CL:NREVERSE 711Q %%= 701Q %%= 654Q %%= 626Q CL:REVERSE 550Q CL:LENGTH 345Q CL:LENGTH 20Q ERROR) (1051Q LIST 776Q LIST 517Q :KEY 511Q IDENTITY 435Q :CL:COUNT 353Q :END 270Q :START 210Q :TEST-NOT 130Q :TEST 122Q EQL 56Q :FROM-END) ( 1621Q " copy the rest of the vector" 1571Q " delete the losers" 1530Q " find the losers" 1044Q "value" 771Q "value" 753Q (NIL) 615Q (NIL) 14Q "Too few args") REMOVE-IF D1 (L (0 \CL:LAMBDA.ARGCNT) P 74Q NEW-INDEX P 73Q INDEX P 72Q THIS-ELEMENT P 71Q NUMBER-ZAPPED P 70Q NEW-INDEX P 67Q RESULT P 66Q INDEX P 65Q RESULT P 64Q INDEX P 63Q JNDEX P 62Q * P 61Q INDEX P 60Q JNDEX P 57Q INDEX P 56Q * P 55Q LOSERS P 54Q THIS-ELEMENT P 53Q LOSERS P 52Q TERMINUS P 51Q NUMBER-ZAPPED P 50Q * P 47Q INDEX P 46Q SEQUENCE P 45Q THIS-ELEMENT P 44Q NUMBER-ZAPPED P 43Q INDEX P 42Q RESULTS P 41Q BEFORE-START P 40Q INDEX P 37Q SPLICE P 36Q VAL P 35Q INDEX P 34Q THIS-ELEMENT P 33Q NUMBER-ZAPPED P 32Q INDEX P 31Q RESULTS P 30Q BEFORE-START P 27Q INDEX P 26Q SPLICE P 25Q SEQUENCE P 24Q VAL P 23Q CL:LENGTH P 22Q KEY P 21Q CL:COUNT P 20Q END P 10Q START P 5 FROM-END P 2 SEQUENCE P 1 PREDICATE) B=elHoH @AHlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a_Hl__OdOhJ agOkذOl_a!Hl__OdOhnagOkذOl_a_"Hl__OdOhgagOkذOl_a_$J JJMJO(dlO(ogO( hhjO,O.O ZO0OjO4O O6O" O4O*\O2O!O@O +OB"Oj%OFO OHO" 8OF_JODO>dJJ&_>O@k_@O>dJJ&_>Ok԰JJ_JkO$kIO>dOJ&_>OHk_HOFk_FMJ &O kojOk$,ONOT ORO" OVoOd0OZO^O @O^oO`3ObO& OLOf OLOb OLOf ObkOdOfk_f_d_bOLO^ OLO` O^OZ OZ_ZO`k_`O\O^k_^_\OLON _XkO$kIORk_RONOV_VONk_N=OjJ O& 5OhO 4OjOj:OlO OrO" MOlOp!O@O +OB"Oj%OFO OHO" 8OF_JODO>dJJ&_>O@k_@O>dJJ&_>Ok԰JJ_JkO$kIO>dOJ&_>OHk_HOFk_FMJ &O kojOk$,ONOT ORO" OVoOd0OZO^O @O^oO`3ObO& OLOf OLOb OLOf ObkOdOfk_f_d_bOLO^ OLO` O^OZ OZ_ZO`k_`O\O^k_^_\OLON _XkO$kIORk_RONOV_VONk_N=OjJ O& 5OhO 4OjOj:OlO OrO" MOlOpOoO OO IO IIO IO OkOOk___IO IO IO kLIgLgMNOkgJgMOOgK Ok_Ok_r(277Q CL:POSITION 225Q AREF 216Q ASET 210Q AREF 155Q ASET 147Q AREF 137Q SHRINK-VECTOR 130Q %%= 104Q %%= 62Q CL:LENGTH 36Q ERROR 20Q ERROR) (272Q :TEST-NOT 260Q :END 254Q :TEST 241Q :START 235Q :KEY) ( 114Q " copy the rest of the vector " 32Q "Too many args" 14Q "Too few args") DELETE-DUPLICATES D1 (L (0 \CL:LAMBDA.ARGCNT) P 23Q KEY P 22Q END P 15Q FROM-END P 12Q START P 7 TEST-NOT P 4 TEST P 1 SEQUENCE) VekHoH @HlKdJhgagKkذKl[aHlNdMhdagNkذNl^a_Hl__OdOhjagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhI agOkذOl_aHl_"_ O"dO hgagO"kذO"l_"a_&IdddLOO&OOO$ LOO&OOO$ (523Q VECTOR-DELETE-DUPLICATES* 503Q LIST-DELETE-DUPLICATES* 335Q CL:LENGTH 17Q ERROR) (425Q :KEY 417Q IDENTITY 343Q :END 260Q :FROM-END 200Q :START 123Q :TEST-NOT 56Q :TEST 50Q EQL) ( 13Q "Too few args") LIST-SUBSTITUTE* D1 (L (11Q OLD 10Q TEST-NOT 7 TEST 6 KEY 5 CL:COUNT 4 END 3 START 2 LIST 1 NEW 0 PRED))  hhaHBj\C JdK&KLk԰CDND xKEj lKJd@]dg$GIkFGlG3IkFGlG&gIkFkGMgIkFkGhEkb AI&KNk԰KJdK&K[H(65Q %%= 51Q %%= 17Q %%=) (174Q IF-NOT 152Q IF 102Q NORMAL) () VECTOR-SUBSTITUTE* D1 (L (15Q OLD 14Q TEST-NOT 13Q TEST 12Q KEY 11Q CL:COUNT 10Q END 7 START 6 CL:LENGTH 5 RIGHT 4 LEFT 3 INCREMENTER 2 SEQUENCE 1 NEW 0 PRED)) B F D"IG BI HI ICYIG zGj rBI @Zdg&GKkGGlG6KkGGlG(gKkGkGJgKkGkGhGkbAKHI ICYIE BI HI ICYH(265Q ASET 260Q AREF 251Q %%= 235Q ASET 71Q AREF 62Q %%= 52Q %%= 35Q ASET 30Q AREF 21Q %%= 7 MAKE-SEQUENCE-OF-TYPE 3 TYPE-OF) (175Q IF-NOT 152Q IF 100Q NORMAL) () SUBSTITUTE D1 (L (0 \CL:LAMBDA.ARGCNT) P 32Q OLD P 31Q CL:LENGTH P 30Q KEY P 27Q END P 22Q CL:COUNT P 17Q START P 14Q TEST-NOT P 11Q TEST P 6 FROM-END P 3 SEQUENCE P 2 OLD P 1 NEW) elHoH @AB@HlMdLhdagMkذMl]aHl__OdOhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl_"_ O"dO hnagO"kذO"l_"a_$Hl_(_&O(dO&hK agO(kذO(l_(aHl_,_*O,dO*hgagO,kذO,l_,a_0K JkO0KKAN&gIK O2O.O2OO$O0OOO4 gIKOO.O$O0OOO4 N(gIKmO2kmO2O.kOkO$O0OOO4 gIKkjO2dOO.O$O0OOO4 (777Q VECTOR-SUBSTITUTE* 742Q VECTOR-SUBSTITUTE* 671Q LIST-SUBSTITUTE* 641Q CL:NREVERSE 636Q LIST-SUBSTITUTE* 606Q CL:REVERSE 554Q CL:LENGTH 433Q CL:LENGTH 20Q ERROR) (746Q NORMAL 700Q NORMAL 645Q NORMAL 601Q NORMAL 523Q :KEY 515Q IDENTITY 441Q :END 356Q :CL:COUNT 274Q :START 214Q :TEST-NOT 134Q :TEST 126Q EQL 57Q :FROM-END) ( 14Q "Too few args") SUBSTITUTE-IF D1 (L (0 \CL:LAMBDA.ARGCNT) P 25Q OLD P 24Q TEST-NOT P 23Q CL:LENGTH P 22Q KEY P 21Q CL:COUNT P 20Q END P 11Q START P 6 FROM-END P 3 SEQUENCE P 2 TEST P 1 NEW) elHoH @ABHlMdLhdagMkذMl]aHl__OdOhjagOkذOl_a_Hl__OdOhK agOkذOl_a!Hl__OdOhnagOkذOl_a_"Hl__OdOhgagOkذOl_a_$K !KK?N%gIK O&O O&OO"O$JO(O* gIKOO O"O$JO(O* N'gIKmO&kmO&O kOkO"O$JO(O* gIKkjO&dOO O"O$JO(O* (620Q VECTOR-SUBSTITUTE* 564Q VECTOR-SUBSTITUTE* 514Q LIST-SUBSTITUTE* 465Q CL:NREVERSE 462Q LIST-SUBSTITUTE* 433Q CL:REVERSE 407Q CL:LENGTH 204Q CL:LENGTH 20Q ERROR) (570Q CL:IF 523Q CL:IF 471Q CL:IF 426Q CL:IF 356Q :KEY 350Q IDENTITY 274Q :CL:COUNT 212Q :END 127Q :START 54Q :FROM-END) ( 14Q "Too few args") SUBSTITUTE-IF-NOT D1 (L (0 \CL:LAMBDA.ARGCNT) P 25Q OLD P 24Q TEST-NOT P 23Q CL:LENGTH P 22Q KEY P 21Q CL:COUNT P 20Q END P 11Q START P 6 FROM-END P 3 SEQUENCE P 2 TEST P 1 NEW) elHoH @ABHlMdLhdagMkذMl]aHl__OdOhjagOkذOl_a_Hl__OdOhK agOkذOl_a!Hl__OdOhnagOkذOl_a_"Hl__OdOhgagOkذOl_a_$K !KK?N%gIK O&O O&OO"O$JO(O* gIKOO O"O$JO(O* N'gIKmO&kmO&O kOkO"O$JO(O* gIKkjO&dOO O"O$JO(O* (620Q VECTOR-SUBSTITUTE* 564Q VECTOR-SUBSTITUTE* 514Q LIST-SUBSTITUTE* 465Q CL:NREVERSE 462Q LIST-SUBSTITUTE* 433Q CL:REVERSE 407Q CL:LENGTH 204Q CL:LENGTH 20Q ERROR) (570Q IF-NOT 523Q IF-NOT 471Q IF-NOT 426Q IF-NOT 356Q :KEY 350Q IDENTITY 274Q :CL:COUNT 212Q :END 127Q :START 54Q :FROM-END) ( 14Q "Too few args") NSUBSTITUTE D1 (L (0 \CL:LAMBDA.ARGCNT) P 33Q VAL P 32Q INCREMENTER P 31Q START P 30Q KEY P 27Q CL:COUNT P 26Q END P 25Q VAL P 14Q TEST-NOT P 11Q TEST P 6 FROM-END P 3 SEQUENCE P 2 OLD P 1 NEW) elHoH @AB HlMdLhdagMkذMl]aHl__OdOhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOh@K ;KO* O* (agOkذOl_oO*g _*aAHl_ _O dOhnagO kذO l_ a_.Hl_$_"O$dO"hgagO$kذO$l_$a_0Hl_(_&O(dO&hjagO(kذO(l_(a_2k_4NO,kO2km_4_,_2KK[NDIJKO6dlO6oO6 OOO2O,O.O0 oO6g _6IJKOOO2O,O.O0 IJKO4OOO2O,O.O0 (1032Q NVECTOR-SUBSTITUTE* 1004Q NLIST-SUBSTITUTE* 755Q \CHECK-TYPE-FAIL 740Q CL:NREVERSE 735Q NLIST-SUBSTITUTE* 715Q CL:NREVERSE 360Q \CHECK-TYPE-FAIL 315Q CL:LENGTH 305Q VECTORP 272Q VECTORP 20Q ERROR) (752Q LIST 567Q :START 507Q :KEY 501Q IDENTITY 425Q :CL:COUNT 355Q VECTOR 323Q :END 214Q :TEST-NOT 134Q :TEST 126Q EQL 57Q :FROM-END) ( 745Q "value" 704Q (NIL) 350Q "value" 14Q "Too few args") NLIST-SUBSTITUTE* D1 (L (10Q KEY 7 CL:COUNT 6 END 5 START 4 TEST-NOT 3 TEST 2 SEQUENCE 1 OLD 0 NEW)) Q EB EFIF HGj BDHkGAlDhHkGAlCH@GkbHIkԹ(30Q %%= 17Q %%= 4 NTHCDR) NIL () NVECTOR-SUBSTITUTE* D1 (L (11Q KEY 10Q CL:COUNT 7 END 6 START 5 TEST-NOT 4 TEST 3 INCREMENTER 2 SEQUENCE 1 OLD 0 NEW)) P FHG Gj BEBH AlGkEhBH kGAlD@BH GkbHCX(100Q ASET 56Q AREF 33Q AREF 20Q %%= 11Q %%=) NIL () NSUBSTITUTE-IF D1 (L (0 \CL:LAMBDA.ARGCNT) P 25Q VAL P 24Q INCREMENTER P 23Q KEY P 22Q CL:COUNT P 21Q END P 20Q VAL P 11Q START P 6 FROM-END P 3 SEQUENCE P 2 TEST P 1 NEW) elHoH @ABHlMdLhdagMkذMl]aHl__OdOhjagOkذOl_a_Hl__OdOh@K ;KO O  (agOkذOl_oO g _ a1Hl__OdOhnagOkذOl_a_$Hl__OdOhgagOkذOl_a_&k_(NO"kOkm_(_"_KKSN@IJKO*dlO*oO* OO"O$O&  oO*g _*IJKOO"O$O& IJKO(OO"O$O& (651Q NVECTOR-SUBSTITUTE-IF* 627Q NLIST-SUBSTITUTE-IF* 604Q \CHECK-TYPE-FAIL 567Q CL:NREVERSE 564Q NLIST-SUBSTITUTE-IF* 550Q CL:NREVERSE 273Q \CHECK-TYPE-FAIL 230Q CL:LENGTH 220Q VECTORP 205Q VECTORP 20Q ERROR) (601Q LIST 422Q :KEY 414Q IDENTITY 340Q :CL:COUNT 270Q VECTOR 236Q :END 127Q :START 54Q :FROM-END) ( 574Q "value" 537Q (NIL) 263Q "value" 14Q "Too few args") NLIST-SUBSTITUTE-IF* D1 (L (6 KEY 5 CL:COUNT 4 END 3 START 2 SEQUENCE 1 TEST 0 NEW)) <CB CDID HEj BHdkFkAH@Ekb HIkԹ(27Q %%= 17Q %%= 4 NTHCDR) NIL () NVECTOR-SUBSTITUTE-IF* D1 (L (7 KEY 6 CL:COUNT 5 END 4 START 3 INCREMENTER 2 SEQUENCE 1 TEST 0 NEW)) 5DHE Fj BBH kGkA@BH Fkb HCX(46Q ASET 26Q AREF 16Q %%= 10Q %%=) NIL () NSUBSTITUTE-IF-NOT D1 (L (0 \CL:LAMBDA.ARGCNT) P 25Q VAL P 24Q INCREMENTER P 23Q KEY P 22Q CL:COUNT P 21Q END P 20Q VAL P 11Q START P 6 FROM-END P 3 SEQUENCE P 2 TEST P 1 NEW) elHoH @ABHlMdLhdagMkذMl]aHl__OdOhjagOkذOl_a_Hl__OdOh@K ;KO O  (agOkذOl_oO g _ a1Hl__OdOhnagOkذOl_a_$Hl__OdOhgagOkذOl_a_&k_(NO"kOkm_(_"_KKSN@IJKO*dlO*oO* OO"O$O&  oO*g _*IJKOO"O$O& IJKO(OO"O$O& (651Q NVECTOR-SUBSTITUTE-IF-NOT* 627Q NLIST-SUBSTITUTE-IF-NOT* 604Q \CHECK-TYPE-FAIL 567Q CL:NREVERSE 564Q NLIST-SUBSTITUTE-IF-NOT* 550Q CL:NREVERSE 273Q \CHECK-TYPE-FAIL 230Q CL:LENGTH 220Q VECTORP 205Q VECTORP 20Q ERROR) (601Q LIST 422Q :KEY 414Q IDENTITY 340Q :CL:COUNT 270Q VECTOR 236Q :END 127Q :START 54Q :FROM-END) ( 574Q "value" 537Q (NIL) 263Q "value" 14Q "Too few args") NLIST-SUBSTITUTE-IF-NOT* D1 (L (6 KEY 5 CL:COUNT 4 END 3 START 2 SEQUENCE 1 TEST 0 NEW)) <CB CDID HEj BHdkFkAH@Ekb HIkԹ(27Q %%= 17Q %%= 4 NTHCDR) NIL () NVECTOR-SUBSTITUTE-IF-NOT* D1 (L (7 KEY 6 CL:COUNT 5 END 4 START 3 INCREMENTER 2 SEQUENCE 1 TEST 0 NEW)) 5DHE Fj BBH kGkA@BH Fkb HCX(46Q ASET 26Q AREF 16Q %%= 10Q %%=) NIL () CL:POSITION D1 (L (0 \CL:LAMBDA.ARGCNT) P 24Q KEY P 23Q END P 16Q START P 13Q TEST-NOT P 10Q TEST P 5 FROM-END P 2 SEQUENCE P 1 ITEM) ^elHoH @AHlLdKhdagLkذLl\aHl_OdNhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl_ _O dOhJ agO kذO l_ aHl_$_"O$dO"hgagO$kذO$l_$a_(JJIJMOOOO&O( IJMOOOO&O( (533Q VECTOR-POSITION* 511Q LIST-POSITION* 345Q CL:LENGTH 20Q ERROR) (435Q :KEY 427Q IDENTITY 353Q :END 270Q :START 210Q :TEST-NOT 130Q :TEST 122Q EQL 56Q :FROM-END) ( 14Q "Too few args") LIST-POSITION* D1 (L (7 KEY 6 END 5 START 4 TEST-NOT 3 TEST 2 FROM-END 1 SEQUENCE 0 ITEM)) BsA FAHdlHoH FkIEk HhoHg XD@HHkGlDI@HHkGlCIkYEA EIF HD@HHkGlDI@HHkGlCIkY(201Q %%= 170Q NTHCDR 101Q \CHECK-TYPE-FAIL 61Q %%= 44Q NTHCDR 41Q REVERSE 6 CL:LENGTH) (76Q LIST) ( 72Q "value" 31Q (NIL)) VECTOR-POSITION* D1 (L (7 KEY 6 END 5 START 4 TEST-NOT 3 TEST 2 FROM-END 1 SEQUENCE 0 ITEM)) OBmkBFkՀEBEkՀFI[J hD@AK kGlDK@AK kGlCKH԰(74Q AREF 50Q AREF 34Q %%=) NIL () POSITION-IF D1 (L (0 \CL:LAMBDA.ARGCNT) P 30Q INDEX P 27Q END P 26Q START P 25Q INCREMENTER P 24Q INDEX P 23Q SEQUENCE P 22Q INDEX P 21Q SEQUENCE P 20Q VAL P 17Q CL:LENGTH P 16Q END P 15Q START P 12Q KEY P 5 FROM-END P 2 SEQUENCE P 1 TEST) elHoH @A HlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a Hl__OdOhgagOkذOl_a_Hl__OdOhJ agOkذOl_aJ JJMiOOJO dlO o"O  OkO$Ok O"hoO g _ O"_"kOkIO$O$k_$OJ OO(O O&hO&_&kOkIO(O(k_(MmkMOkՁOMOkՁOO,O0O. JO0 kOkIO0O0O*_0(652Q AREF 642Q %%= 530Q %%= 514Q NTHCDR 446Q \CHECK-TYPE-FAIL 423Q %%= 403Q NTHCDR 400Q CL:REVERSE 321Q CL:LENGTH 262Q CL:LENGTH 20Q ERROR) (443Q LIST 270Q :END 205Q :KEY 177Q IDENTITY 123Q :START 53Q :FROM-END) ( 436Q "value" 367Q (NIL) 14Q "Too few args") POSITION-IF-NOT D1 (L (0 \CL:LAMBDA.ARGCNT) P 30Q INDEX P 27Q END P 26Q START P 25Q INCREMENTER P 24Q INDEX P 23Q SEQUENCE P 22Q INDEX P 21Q SEQUENCE P 20Q VAL P 17Q CL:LENGTH P 16Q END P 15Q START P 12Q KEY P 5 FROM-END P 2 SEQUENCE P 1 TEST) elHoH @A HlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a Hl__OdOhgagOkذOl_a_Hl__OdOhJ agOkذOl_aJ JJMiOOJO dlO o"O  OkO$Ok O"hoO g _ O"_"kOkIO$O$k_$OJ OO(O O&hO&_&kOkIO(O(k_(MmkMOkՁOMOkՁOO,O0O. JO0 kOkIO0O0O*_0(652Q AREF 642Q %%= 530Q %%= 514Q NTHCDR 446Q \CHECK-TYPE-FAIL 423Q %%= 403Q NTHCDR 400Q CL:REVERSE 321Q CL:LENGTH 262Q CL:LENGTH 20Q ERROR) (443Q LIST 270Q :END 205Q :KEY 177Q IDENTITY 123Q :START 53Q :FROM-END) ( 436Q "value" 367Q (NIL) 14Q "Too few args") CL:COUNT D1 (L (0 \CL:LAMBDA.ARGCNT) P 31Q CL:COUNT P 30Q INDEX P 27Q CL:COUNT P 26Q INDEX P 25Q SEQUENCE P 24Q KEY P 23Q END P 16Q START P 13Q TEST-NOT P 10Q TEST P 5 FROM-END P 2 SEQUENCE P 1 ITEM) elHoH @AHlLdKhdagLkذLl\aHl_OdNhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl_ _O dOhJ agO kذO l_ aHl_$_"O$dO"hgagO$kذO$l_$a_(JJZOJ OjO,O& O*O.OIO*O*_*kO(lOIO*O*_*kO(lOO.k_.O,k_,OjO0O& O2OIJO0 kO(lOIJO0 kO(lOO2k_2O0k_0(675Q AREF 654Q AREF 635Q %%= 513Q %%= 476Q NTHCDR 345Q CL:LENGTH 20Q ERROR) (435Q :KEY 427Q IDENTITY 353Q :END 270Q :START 210Q :TEST-NOT 130Q :TEST 122Q EQL 56Q :FROM-END) ( 14Q "Too few args") COUNT-IF D1 (L (0 \CL:LAMBDA.ARGCNT) P 23Q CL:COUNT P 22Q INDEX P 21Q CL:COUNT P 20Q INDEX P 17Q SEQUENCE P 16Q KEY P 15Q END P 10Q START P 5 FROM-END P 2 SEQUENCE P 1 TEST) @elHoH @A HlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a_Hl__OdOhJ agOkذOl_aHl__OdOhgagOkذOl_a_JJ=OJ OjO O OO"O_kOkIO"k_"O k_ OjO$O O&JO$ kOkIO&k_&O$k_$(445Q AREF 433Q %%= 346Q %%= 331Q NTHCDR 200Q CL:LENGTH 20Q ERROR) (270Q :KEY 262Q IDENTITY 206Q :END 123Q :START 53Q :FROM-END) ( 14Q "Too few args") COUNT-IF-NOT D1 (L (0 \CL:LAMBDA.ARGCNT) P 23Q CL:COUNT P 22Q INDEX P 21Q CL:COUNT P 20Q INDEX P 17Q SEQUENCE P 16Q KEY P 15Q END P 10Q START P 5 FROM-END P 2 SEQUENCE P 1 TEST) @elHoH @A HlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a_Hl__OdOhJ agOkذOl_aHl__OdOhgagOkذOl_a_JJ=OJ OjO O OO"O_kOkIO"k_"O k_ OjO$O O&JO$ kOkIO&k_&O$k_$(445Q AREF 433Q %%= 346Q %%= 331Q NTHCDR 200Q CL:LENGTH 20Q ERROR) (270Q :KEY 262Q IDENTITY 206Q :END 123Q :START 53Q :FROM-END) ( 14Q "Too few args") CL:FIND D1 (L (0 \CL:LAMBDA.ARGCNT) P 24Q KEY P 23Q END P 16Q START P 13Q TEST-NOT P 10Q TEST P 5 FROM-END P 2 SEQUENCE P 1 ITEM) ^elHoH @AHlLdKhdagLkذLl\aHl_OdNhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl_ _O dOhJ agO kذO l_ aHl_$_"O$dO"hgagO$kذO$l_$a_(JJIJMOOOO&O( IJMOOOO&O( (533Q VECTOR-FIND* 511Q LIST-FIND* 345Q CL:LENGTH 20Q ERROR) (435Q :KEY 427Q IDENTITY 353Q :END 270Q :START 210Q :TEST-NOT 130Q :TEST 122Q EQL 56Q :FROM-END) ( 14Q "Too few args") LIST-FIND* D1 (L (7 KEY 6 END 5 START 4 TEST-NOT 3 TEST 2 FROM-END 1 SEQUENCE 0 ITEM)) BoA FAHdlHoH FkIEk HhoHg XHD@JkGlDJ@JkGlCIkYEA EIF HhHD@JkGlDJ@JkGlCIkY(175Q %%= 164Q NTHCDR 102Q \CHECK-TYPE-FAIL 61Q %%= 44Q NTHCDR 41Q CL:REVERSE 6 CL:LENGTH) (77Q LIST) ( 73Q "value" 31Q (NIL)) VECTOR-FIND* D1 (L (7 KEY 6 END 5 START 4 TEST-NOT 3 TEST 2 FROM-END 1 SEQUENCE 0 ITEM)) KBmkBFkՀEBEkՀF#I[J hAK D@LkGlDL@LkGlCKH԰(44Q AREF 34Q %%=) NIL () FIND-IF D1 (L (0 \CL:LAMBDA.ARGCNT) P 33Q CURRENT P 32Q INDEX P 31Q END P 30Q START P 27Q INCREMENTER P 26Q CURRENT P 25Q INDEX P 24Q SEQUENCE P 23Q CURRENT P 22Q INDEX P 21Q SEQUENCE P 20Q VAL P 17Q CL:LENGTH P 16Q KEY P 15Q END P 14Q START P 5 FROM-END P 2 SEQUENCE P 1 TEST) elHoH @A HlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a Hl__OdOhJ agOkذOl_aHl__OdOhgagOkذOl_a_J JJMkOOJO dlO o"O  OkO$Ok O"hoO g _ O"_"_&kOkIO&O$k_$OJ OO*O O(hO(_(_,kOkIO,O*k_*MmkMOkՁOMOkՁOO0O4O2 JO4 _6kOkIO6O4O._4(656Q AREF 646Q %%= 532Q %%= 516Q NTHCDR 446Q \CHECK-TYPE-FAIL 423Q %%= 403Q NTHCDR 400Q CL:REVERSE 321Q CL:LENGTH 200Q CL:LENGTH 20Q ERROR) (443Q LIST 270Q :KEY 262Q IDENTITY 206Q :END 123Q :START 53Q :FROM-END) ( 436Q "value" 367Q (NIL) 14Q "Too few args") FIND-IF-NOT D1 (L (0 \CL:LAMBDA.ARGCNT) P 33Q CURRENT P 32Q INDEX P 31Q END P 30Q START P 27Q INCREMENTER P 26Q CURRENT P 25Q INDEX P 24Q SEQUENCE P 23Q CURRENT P 22Q INDEX P 21Q SEQUENCE P 20Q VAL P 17Q CL:LENGTH P 16Q KEY P 15Q END P 14Q START P 5 FROM-END P 2 SEQUENCE P 1 TEST) elHoH @A HlLdKhdagLkذLl\aHl_OdNhjagOkذOl_a Hl__OdOhJ agOkذOl_aHl__OdOhgagOkذOl_a_J JJMkOOJO dlO o"O  OkO$Ok O"hoO g _ O"_"_&kOkIO&O$k_$OJ OO*O O(hO(_(_,kOkIO,O*k_*MmkMOkՁOMOkՁOO0O4O2 JO4 _6kOkIO6O4O._4(656Q AREF 646Q %%= 532Q %%= 516Q NTHCDR 446Q \CHECK-TYPE-FAIL 423Q %%= 403Q NTHCDR 400Q CL:REVERSE 321Q CL:LENGTH 200Q CL:LENGTH 20Q ERROR) (443Q LIST 270Q :KEY 262Q IDENTITY 206Q :END 123Q :START 53Q :FROM-END) ( 436Q "value" 367Q (NIL) 14Q "Too few args") MISMATCH D1 (L (0 \CL:LAMBDA.ARGCNT) P 54Q INDEX2 P 53Q INDEX1 P 52Q INDEX2 P 51Q INDEX1 P 50Q VAL P 47Q INDEX2 P 46Q INDEX1 P 45Q INDEX2 P 44Q INDEX1 P 43Q VAL P 42Q VAL P 41Q END2 P 40Q END1 P 37Q START2 P 36Q START1 P 35Q INC P 34Q LENGTH2 P 33Q LENGTH1 P 32Q KEY P 31Q END2 P 30Q START2 P 27Q END1 P 26Q START1 P 13Q TEST-NOT P 10Q TEST P 5 FROM-END P 2 SEQUENCE2 P 1 SEQUENCE1) -elHoH @A@HlLdKhdagLkذLl\aHl_OdNhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_aHl__OdOhI agOkذOl_aHl_"_ O"dO hjagO"kذO"l_"aHl_&_$O&dO$hJ agO&kذO&l_&aHl_*_(O*dO(hgagO*kذO*l_*a_4I J MmkMO.kՁO,MO2kՁO0MO,kՁO.MO0kՁO2!IIM6O6OkJ#OFdlOFoOF oOFg _FO>J ZO%OHO@ OJOB hM[OHOJOB MOHkO&IIkO4JJkO4lO-MOHkIIkO4JJkO4lOMOHkOHO:OJO:_J_HO'OLO@ ONOB sM]OLONOB MOLkO'IIkO4JON kO4lO.MOLkIIkO4JON kO4lOMOLkOLO:ONO:_N_L|JJM6O8O>kJ(OPdlOPoOP oOPg _PO>J ZO*ORO@ OTOB M]OROTOB MORkO'IOR kO4JJkO4lO.MORkIOR kO4JJkO4lOMORkORO:OTO:_T_R|O,OVO@ OXOB M_OVOXOB MOVkO(IOV kO4JOX kO4lO/MOVkIOV kO4JOX kO4lOMOVkOVO:OXO:_X_Vz(2267Q AREF 2254Q AREF 2221Q AREF 2206Q AREF 2163Q %%= 2142Q %%= 2131Q %%= 2033Q AREF 1766Q AREF 1743Q %%= 1722Q %%= 1711Q %%= 1672Q NTHCDR 1660Q \CHECK-TYPE-FAIL 1642Q CL:REVERSE 1517Q AREF 1452Q AREF 1415Q %%= 1374Q %%= 1363Q %%= 1177Q %%= 1157Q %%= 1147Q %%= 1130Q NTHCDR 1116Q \CHECK-TYPE-FAIL 1100Q CL:REVERSE 1022Q NTHCDR 1010Q \CHECK-TYPE-FAIL 772Q CL:REVERSE 635Q CL:LENGTH 631Q CL:LENGTH 510Q CL:LENGTH 345Q CL:LENGTH 20Q ERROR) (1655Q LIST 1113Q LIST 1005Q LIST 600Q :KEY 572Q IDENTITY 516Q :END2 433Q :START2 353Q :END1 270Q :START1 210Q :TEST-NOT 130Q :TEST 122Q EQL 56Q :FROM-END) ( 1650Q "value" 1632Q (NIL) 1106Q "value" 1070Q (NIL) 1000Q "value" 762Q (NIL) 14Q "Too few args") SEARCH D1 (L (0 \CL:LAMBDA.ARGCNT) P 53Q SUB-INDEX P 52Q INDEX P 51Q INDEX P 50Q JNDEX P 47Q SUB P 46Q LAST-MATCH P 45Q TERMINUS P 44Q INDEX2 P 43Q INDEX P 42Q MAIN P 41Q SUB P 40Q JNDEX P 37Q MAIN P 36Q LAST-MATCH P 35Q TERMINUS P 34Q INDEX2 P 33Q MAIN P 32Q KEY P 31Q END2 P 30Q START2 P 27Q END1 P 16Q START1 P 13Q TEST-NOT P 10Q TEST P 5 FROM-END P 2 SEQUENCE2 P 1 SEQUENCE1) ,elHoH @APHlLdKhdagLkذLl\aHl_OdNhgagOkذOl_a_Hl__OdOhdagOkذOl_a_Hl__OdOhjagOkذOl_a_Hl_ _O dOhI agO kذO l_ aHl_$_"O$dO"hjagO$kذO$l_$a_0Hl_(_&O(dO&hJ agO(kذO(l_(aHl_,_*O,dO*hgagO,kذO,l_,a_4JJ O0J O0O2O.OO8O:O<IIlO6OdI !O>OBO.O@ i8OO>kO4OBkO4lOO>kO4OBkO4lOhiO>O@kOB_B_@_>O6O#ODOFO. i?OODkO4IOF kO4lO:ODkO4IOF kO4lOhM%O8_OJOR kO4ONkO4lO"JOR kO4ONkO4lOhmONOPkORk_R_P_NOHO+OVO. iDO"JOT kO4IOV kO4lO.JOT kO4IOV kO4lOhMOH_LOTkOVk_V_TOHOHk_H (1571Q AREF 1556Q AREF 1531Q AREF 1516Q AREF 1500Q %%= 1404Q AREF 1347Q AREF 1326Q %%= 1310Q NTHCDR 1155Q AREF 1120Q AREF 1072Q %%= 730Q %%= 710Q NTHCDR 643Q NTHCDR 510Q CL:LENGTH 345Q CL:LENGTH 20Q ERROR) (600Q :KEY 572Q IDENTITY 516Q :END2 433Q :START2 353Q :END1 270Q :START1 210Q :TEST-NOT 130Q :TEST 122Q EQL 56Q :FROM-END) ( 14Q "Too few args") (PRETTYCOMPRINT CMLSEQCOMS) (RPAQQ CMLSEQCOMS ((MACROS SEQ-DISPATCH ELT-SLICE MAKE-SEQUENCE-LIKE TYPE-SPECIFIER VECTOR-COPY-SEQ LIST-COPY-SEQ VECTOR-FILL LIST-FILL MUMBLE-REPLACE-FROM-MUMBLE LIST-REPLACE-FROM-LIST LIST-REPLACE-FROM-MUMBLE MUMBLE-REPLACE-FROM-LIST VECTOR-REVERSE LIST-REVERSE-MACRO VECTOR-NREVERSE LIST-NREVERSE-MACRO CONCATENATE-TO-LIST CONCATENATE-TO-MUMBLE MAP-TO-LIST MAP-TO-SIMPLE MAP-FOR-EFFECT MUMBLE-REDUCE MUMBLE-REDUCE-FROM-END LIST-REDUCE LIST-REDUCE-FROM-END MUMBLE-DELETE MUMBLE-DELETE-FROM-END NORMAL-MUMBLE-DELETE NORMAL-MUMBLE-DELETE-FROM-END LIST-DELETE LIST-DELETE-FROM-END NORMAL-LIST-DELETE NORMAL-LIST-DELETE-FROM-END IF-MUMBLE-DELETE IF-MUMBLE-DELETE-FROM-END IF-LIST-DELETE IF-LIST-DELETE-FROM-END IF-NOT-MUMBLE-DELETE IF-NOT-MUMBLE-DELETE-FROM-END IF-NOT-LIST-DELETE IF-NOT-LIST-DELETE-FROM-END MUMBLE-REMOVE-MACRO MUMBLE-REMOVE MUMBLE-REMOVE-FROM-END NORMAL-MUMBLE-REMOVE NORMAL-MUMBLE-REMOVE-FROM-END IF-MUMBLE-REMOVE IF-MUMBLE-REMOVE-FROM-END IF-NOT-MUMBLE-REMOVE IF-NOT-MUMBLE-REMOVE-FROM-END LIST-REMOVE-MACRO LIST-REMOVE LIST-REMOVE-FROM-END NORMAL-LIST-REMOVE NORMAL-LIST-REMOVE-FROM-END IF-LIST-REMOVE IF-LIST-REMOVE-FROM-END IF-NOT-LIST-REMOVE IF-NOT-LIST-REMOVE-FROM-END SUBST-DISPATCH VECTOR-POSITION VECTOR-POSITION-IF LIST-POSITION LIST-POSITION-IF VECTOR-POSITION-IF-NOT LIST-POSITION-IF-NOT VECTOR-COUNT LIST-COUNT VECTOR-COUNT-IF LIST-COUNT-IF VECTOR-COUNT-IF-NOT LIST-COUNT-IF-NOT VECTOR-FIND LIST-FIND VECTOR-FIND-IF LIST-FIND-IF VECTOR-FIND-IF-NOT LIST-FIND-IF-NOT MATCH-VARS MATCHIFY-LIST IF-MISMATCH MUMBLE-MUMBLE-MISMATCH MUMBLE-LIST-MISMATCH LIST-MUMBLE-MISMATCH LIST-LIST-MISMATCH COMPARE-ELEMENTS SEARCH-COMPARE-LIST-LIST SEARCH-COMPARE-LIST-VECTOR SEARCH-COMPARE-VECTOR-LIST SEARCH-COMPARE-VECTOR-VECTOR SEARCH-COMPARE LIST-SEARCH VECTOR-SEARCH) (PROP SETFN CL:ELT) (FNS MAKE-SEQUENCE-OF-TYPE CL:ELT CL:\SETELT LIST-LENGTH* MAKE-SEQUENCE VECTOR-SUBSEQ* LIST-SUBSEQ* SUBSEQ COPY-SEQ LIST-COPY-SEQ* VECTOR-COPY-SEQ* LIST-FILL* VECTOR-FILL* FILL LIST-REPLACE-FROM-LIST* LIST-REPLACE-FROM-VECTOR* VECTOR-REPLACE-FROM-LIST* VECTOR-REPLACE-FROM-VECTOR* CL:REPLACE CL:REVERSE LIST-REVERSE* VECTOR-REVERSE* LIST-NREVERSE* VECTOR-NREVERSE* CL:NREVERSE CONCATENATE CONCAT-TO-LIST* CONCAT-TO-SIMPLE* CL:MAP CL:SOME CL:EVERY CL:NOTANY CL:NOTEVERY REDUCE CL:COERCE LIST-TO-STRING* LIST-TO-BIT-VECTOR* LIST-TO-VECTOR* VECTOR-TO-LIST* VECTOR-TO-VECTOR* VECTOR-TO-STRING* VECTOR-TO-BIT-VECTOR* STRING-TO-SIMPLE-STRING* BIT-VECTOR-TO-SIMPLE-BIT-VECTOR* CL:DELETE DELETE-IF DELETE-IF-NOT CL:REMOVE REMOVE-IF REMOVE-IF-NOT LIST-REMOVE-DUPLICATES* VECTOR-REMOVE-DUPLICATES* REMOVE-DUPLICATES LIST-DELETE-DUPLICATES* VECTOR-DELETE-DUPLICATES* DELETE-DUPLICATES LIST-SUBSTITUTE* VECTOR-SUBSTITUTE* SUBSTITUTE SUBSTITUTE-IF SUBSTITUTE-IF-NOT NSUBSTITUTE NLIST-SUBSTITUTE* NVECTOR-SUBSTITUTE* NSUBSTITUTE-IF NLIST-SUBSTITUTE-IF* NVECTOR-SUBSTITUTE-IF* NSUBSTITUTE-IF-NOT NLIST-SUBSTITUTE-IF-NOT* NVECTOR-SUBSTITUTE-IF-NOT* CL:POSITION LIST-POSITION* VECTOR-POSITION* POSITION-IF POSITION-IF-NOT CL:COUNT COUNT-IF COUNT-IF-NOT CL:FIND LIST-FIND* VECTOR-FIND* FIND-IF FIND-IF-NOT MISMATCH SEARCH) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS ( NLAMA) (NLAML) (LAMA SEARCH MISMATCH FIND-IF-NOT FIND-IF CL:FIND COUNT-IF-NOT COUNT-IF CL:COUNT POSITION-IF-NOT POSITION-IF CL:POSITION NSUBSTITUTE-IF-NOT NSUBSTITUTE-IF NSUBSTITUTE SUBSTITUTE-IF-NOT SUBSTITUTE-IF SUBSTITUTE DELETE-DUPLICATES VECTOR-DELETE-DUPLICATES* REMOVE-DUPLICATES VECTOR-REMOVE-DUPLICATES* REMOVE-IF-NOT REMOVE-IF CL:REMOVE DELETE-IF-NOT DELETE-IF CL:DELETE REDUCE CL:NOTEVERY CL:NOTANY CL:EVERY CL:SOME CL:MAP CONCAT-TO-SIMPLE* CONCAT-TO-LIST* CONCATENATE CL:REPLACE FILL SUBSEQ LIST-SUBSEQ* VECTOR-SUBSEQ* MAKE-SEQUENCE))))) (DEFMACRO SEQ-DISPATCH (SEQUENCE LIST-FORM ARRAY-FORM) (BQUOTE (COND ((CL:LISTP (\, SEQUENCE)) (\, LIST-FORM)) (T (\, ARRAY-FORM))))) (DEFMACRO ELT-SLICE (SEQUENCES N) "Returns a list of the Nth element of each of the sequences. Used by MAP and friends." (BQUOTE (CL:MAPCAR (FUNCTION (CL:LAMBDA (SEQ) (CL:ELT SEQ (\, N)))) (\, SEQUENCES)))) (DEFMACRO MAKE-SEQUENCE-LIKE (SEQUENCE CL:LENGTH) "Returns a sequence of the same type as SEQUENCE and the given LENGTH." (BQUOTE (MAKE-SEQUENCE-OF-TYPE (TYPE-OF (\, SEQUENCE)) (\, CL:LENGTH)))) (DEFMACRO TYPE-SPECIFIER (TYPE) "Returns the broad class of which TYPE is a specific subclass." ( BQUOTE (COND ((CL:ATOM (\, TYPE)) (\, TYPE)) (T (CAR (\, TYPE)))))) (DEFMACRO VECTOR-COPY-SEQ (SEQUENCE TYPE) (BQUOTE (LET ((CL:LENGTH (CL:LENGTH (THE VECTOR (\, SEQUENCE ))))) (CL:DO ((INDEX 0 (1+ INDEX)) (COPY (MAKE-SEQUENCE-OF-TYPE (\, TYPE) CL:LENGTH))) ((= INDEX CL:LENGTH) COPY) (SETF (AREF COPY INDEX) (AREF (\, SEQUENCE) INDEX)))))) (DEFMACRO LIST-COPY-SEQ (LIST) (BQUOTE (COND ((CL:ATOM (\, LIST)) (QUOTE NIL)) (T (LET ((RESULT (CONS (CAR (\, LIST)) (QUOTE NIL)))) (CL:DO ((X (CDR (\, LIST)) (CDR X)) (SPLICE RESULT (CDR (RPLACD SPLICE (CONS (CAR X) (QUOTE NIL)))))) ((CL:ATOM X) (COND ((NOT (NULL X)) (RPLACD SPLICE X))) RESULT))))))) (DEFMACRO VECTOR-FILL (SEQUENCE ITEM START END) (BQUOTE (CL:DO ((INDEX (\, START) (1+ INDEX))) ((= INDEX (\, END)) (\, SEQUENCE)) (SETF (AREF (\, SEQUENCE) INDEX) (\, ITEM))))) (DEFMACRO LIST-FILL (SEQUENCE ITEM START END) (BQUOTE (CL:DO ((CURRENT (NTHCDR (\, START) (\, SEQUENCE )) (CDR CURRENT)) (INDEX (\, START) (1+ INDEX))) ((OR (CL:ATOM CURRENT) (= INDEX (\, END))) SEQUENCE) (RPLACA CURRENT (\, ITEM))))) (DEFMACRO MUMBLE-REPLACE-FROM-MUMBLE NIL (BQUOTE (COND ((AND (EQ TARGET-SEQUENCE SOURCE-SEQUENCE) (> TARGET-START SOURCE-START)) (LET ((NELTS (MIN (- TARGET-END TARGET-START) (- SOURCE-END SOURCE-START)) )) (CL:DO ((TARGET-INDEX (+ TARGET-START NELTS -1) (1- TARGET-INDEX)) (SOURCE-INDEX (+ SOURCE-START NELTS -1) (1- SOURCE-INDEX))) ((= TARGET-INDEX (1- TARGET-START)) TARGET-SEQUENCE) (SETF (AREF TARGET-SEQUENCE TARGET-INDEX) (AREF SOURCE-SEQUENCE SOURCE-INDEX))))) (T (CL:DO ((TARGET-INDEX TARGET-START (1+ TARGET-INDEX)) (SOURCE-INDEX SOURCE-START (1+ SOURCE-INDEX))) ((OR (= TARGET-INDEX TARGET-END) (= SOURCE-INDEX SOURCE-END)) TARGET-SEQUENCE) (SETF (AREF TARGET-SEQUENCE TARGET-INDEX) ( AREF SOURCE-SEQUENCE SOURCE-INDEX))))))) (DEFMACRO LIST-REPLACE-FROM-LIST NIL (BQUOTE (COND ((AND (EQ TARGET-SEQUENCE SOURCE-SEQUENCE) (> TARGET-START SOURCE-START)) (LET ((NEW-ELTS (SUBSEQ SOURCE-SEQUENCE SOURCE-START (+ SOURCE-START (MIN (- TARGET-END TARGET-START) (- SOURCE-END SOURCE-START)))))) (CL:DO ((N NEW-ELTS (CDR N)) (O (NTHCDR TARGET-START TARGET-SEQUENCE) (CDR O))) ((NULL N) TARGET-SEQUENCE) (RPLACA O (CAR N))))) (T (CL:DO (( TARGET-INDEX TARGET-START (1+ TARGET-INDEX)) (SOURCE-INDEX SOURCE-START (1+ SOURCE-INDEX)) ( TARGET-SEQUENCE-REF (NTHCDR TARGET-START TARGET-SEQUENCE) (CDR TARGET-SEQUENCE-REF)) ( SOURCE-SEQUENCE-REF (NTHCDR SOURCE-START SOURCE-SEQUENCE) (CDR SOURCE-SEQUENCE-REF))) ((OR (= TARGET-INDEX TARGET-END) (= SOURCE-INDEX SOURCE-END) (NULL TARGET-SEQUENCE-REF) (NULL SOURCE-SEQUENCE-REF)) TARGET-SEQUENCE) (RPLACA TARGET-SEQUENCE-REF (CAR SOURCE-SEQUENCE-REF))))))) (DEFMACRO LIST-REPLACE-FROM-MUMBLE NIL (BQUOTE (CL:DO ((TARGET-INDEX TARGET-START (1+ TARGET-INDEX)) ( SOURCE-INDEX SOURCE-START (1+ SOURCE-INDEX)) (TARGET-SEQUENCE-REF (NTHCDR TARGET-START TARGET-SEQUENCE ) (CDR TARGET-SEQUENCE-REF))) ((OR (= TARGET-INDEX TARGET-END) (= SOURCE-INDEX SOURCE-END) (NULL TARGET-SEQUENCE-REF)) TARGET-SEQUENCE) (RPLACA TARGET-SEQUENCE-REF (AREF SOURCE-SEQUENCE SOURCE-INDEX) )))) (DEFMACRO MUMBLE-REPLACE-FROM-LIST NIL (BQUOTE (CL:DO ((TARGET-INDEX TARGET-START (1+ TARGET-INDEX)) ( SOURCE-INDEX SOURCE-START (1+ SOURCE-INDEX)) (SOURCE-SEQUENCE (NTHCDR SOURCE-START SOURCE-SEQUENCE) ( CDR SOURCE-SEQUENCE))) ((OR (= TARGET-INDEX TARGET-END) (= SOURCE-INDEX SOURCE-END) (NULL SOURCE-SEQUENCE)) TARGET-SEQUENCE) (SETF (AREF TARGET-SEQUENCE TARGET-INDEX) (CAR SOURCE-SEQUENCE))))) (DEFMACRO VECTOR-REVERSE (SEQUENCE TYPE) (BQUOTE (LET ((CL:LENGTH (CL:LENGTH (\, SEQUENCE)))) (CL:DO ( (FORWARD-INDEX 0 (1+ FORWARD-INDEX)) (BACKWARD-INDEX (1- CL:LENGTH) (1- BACKWARD-INDEX)) (NEW-SEQUENCE (MAKE-SEQUENCE-OF-TYPE (\, TYPE) CL:LENGTH))) ((= FORWARD-INDEX CL:LENGTH) NEW-SEQUENCE) (SETF (AREF NEW-SEQUENCE FORWARD-INDEX) (AREF (\, SEQUENCE) BACKWARD-INDEX)))))) (DEFMACRO LIST-REVERSE-MACRO (SEQUENCE) (BQUOTE (CL:DO ((NEW-LIST NIL)) ((CL:ATOM (\, SEQUENCE)) NEW-LIST) (PUSH NEW-LIST (POP (\, SEQUENCE)))))) (DEFMACRO VECTOR-NREVERSE (SEQUENCE) (BQUOTE (LET ((CL:LENGTH (CL:LENGTH (THE VECTOR (\, SEQUENCE))))) (CL:DO ((LEFT-INDEX 0 (1+ LEFT-INDEX)) (RIGHT-INDEX (1- CL:LENGTH) (1- RIGHT-INDEX)) (HALF-LENGTH ( TRUNCATE CL:LENGTH 2))) ((= LEFT-INDEX HALF-LENGTH) (\, SEQUENCE)) (ROTATEF (AREF (\, SEQUENCE) LEFT-INDEX) (AREF (\, SEQUENCE) RIGHT-INDEX)))))) (DEFMACRO LIST-NREVERSE-MACRO (LIST) (BQUOTE (CL:DO ((1ST (CDR (\, LIST)) (COND ((CL:ATOM 1ST) 1ST) (T (CDR 1ST)))) (2ND (\, LIST) 1ST) (3RD (QUOTE NIL) 2ND)) ((CL:ATOM 2ND) 3RD) (RPLACD 2ND 3RD)))) (DEFMACRO CONCATENATE-TO-LIST (SEQUENCES) (BQUOTE (LET ((RESULT (LIST NIL))) (CL:DO ((SEQUENCES (\, SEQUENCES) (CDR SEQUENCES)) (SPLICE RESULT)) ((NULL SEQUENCES) (CDR RESULT)) (LET ((SEQUENCE (CAR SEQUENCES))) (SEQ-DISPATCH SEQUENCE (CL:DO ((SEQUENCE SEQUENCE (CDR SEQUENCE))) ((CL:ATOM SEQUENCE)) ( SETQ SPLICE (CDR (RPLACD SPLICE (LIST (CAR SEQUENCE)))))) (CL:DO ((INDEX 0 (1+ INDEX)) (CL:LENGTH ( CL:LENGTH SEQUENCE))) ((= INDEX CL:LENGTH)) (SETQ SPLICE (CDR (RPLACD SPLICE (LIST (AREF SEQUENCE INDEX)))))))))))) (DEFMACRO CONCATENATE-TO-MUMBLE (OUTPUT-TYPE-SPEC SEQUENCES) (BQUOTE (CL:DO ((SEQS (\, SEQUENCES) (CDR SEQS)) (TOTAL-LENGTH 0) (LENGTHS NIL)) ((NULL SEQS) (BREAK1 NIL T) (CL:DO ((SEQUENCES (\, SEQUENCES) (CDR SEQUENCES)) (LENGTHS LENGTHS (CDR LENGTHS)) (INDEX 0) (RESULT (MAKE-SEQUENCE-OF-TYPE (\, OUTPUT-TYPE-SPEC) TOTAL-LENGTH))) ((= INDEX TOTAL-LENGTH) RESULT) (LET ((SEQUENCE (CAR SEQUENCES))) ( SEQ-DISPATCH SEQUENCE (CL:DO ((SEQUENCE SEQUENCE (CDR SEQUENCE))) ((CL:ATOM SEQUENCE)) (SETF (AREF RESULT INDEX) (CAR SEQUENCE)) (SETQ INDEX (1+ INDEX))) (CL:DO ((JNDEX 0 (1+ JNDEX))) ((= JNDEX (CAR LENGTHS))) (SETF (AREF RESULT INDEX) (AREF SEQUENCE JNDEX)) (SETQ INDEX (1+ INDEX))))))) (LET (( CL:LENGTH (CL:LENGTH (CAR SEQS)))) (SETQ LENGTHS (NCONC LENGTHS (LIST CL:LENGTH))) (SETQ TOTAL-LENGTH (+ TOTAL-LENGTH CL:LENGTH)))))) (DEFMACRO MAP-TO-LIST (FUNCTION SEQUENCES) (BQUOTE (CL:DO ((SEQS MORE-SEQUENCES (CDR SEQS)) ( MIN-LENGTH (CL:LENGTH FIRST-SEQUENCE))) ((NULL SEQS) (LET ((RESULT (LIST NIL))) (CL:DO ((INDEX 0 (1+ INDEX)) (SPLICE RESULT)) ((= INDEX MIN-LENGTH) (CDR RESULT)) (SETQ SPLICE (CDR (RPLACD SPLICE (LIST ( CL:APPLY (\, FUNCTION) (ELT-SLICE (\, SEQUENCES) INDEX))))))))) (LET ((CL:LENGTH (CL:LENGTH (CAR SEQS) ))) (COND ((< CL:LENGTH MIN-LENGTH) (SETQ MIN-LENGTH CL:LENGTH)) (T NIL)))))) (DEFMACRO MAP-TO-SIMPLE (OUTPUT-TYPE-SPEC FUNCTION SEQUENCES) (BQUOTE (CL:DO ((SEQS MORE-SEQUENCES ( CDR SEQS)) (MIN-LENGTH (CL:LENGTH FIRST-SEQUENCE))) ((NULL SEQS) (CL:DO ((INDEX 0 (1+ INDEX)) (RESULT (MAKE-SEQUENCE-OF-TYPE (\, OUTPUT-TYPE-SPEC) MIN-LENGTH))) ((= INDEX MIN-LENGTH) RESULT) (SETF (AREF RESULT INDEX) (CL:APPLY (\, FUNCTION) (ELT-SLICE (\, SEQUENCES) INDEX))))) (LET ((CL:LENGTH (CL:LENGTH (CAR SEQS)))) (COND ((< CL:LENGTH MIN-LENGTH) (SETQ MIN-LENGTH CL:LENGTH)) (T NIL)))))) (DEFMACRO MAP-FOR-EFFECT (FUNCTION SEQUENCES) (BQUOTE (CL:DO ((SEQS MORE-SEQUENCES (CDR SEQS)) ( MIN-LENGTH (CL:LENGTH FIRST-SEQUENCE))) ((NULL SEQS) (CL:DO ((INDEX 0 (1+ INDEX))) ((= INDEX MIN-LENGTH) NIL) (CL:APPLY (\, FUNCTION) (ELT-SLICE (\, SEQUENCES) INDEX)))) (LET ((CL:LENGTH ( CL:LENGTH (CAR SEQS)))) (COND ((< CL:LENGTH MIN-LENGTH) (SETQ MIN-LENGTH CL:LENGTH)) (T NIL)))))) (DEFMACRO MUMBLE-REDUCE (FUNCTION SEQUENCE START END INITIAL-VALUE REF) (BQUOTE (CL:DO ((INDEX (\, START) (1+ INDEX)) (VALUE (\, INITIAL-VALUE))) ((= INDEX (\, END)) VALUE) (SETQ VALUE (FUNCALL (\, FUNCTION) VALUE ((\, REF) (\, SEQUENCE) INDEX)))))) (DEFMACRO MUMBLE-REDUCE-FROM-END (FUNCTION SEQUENCE START END INITIAL-VALUE REF) (BQUOTE (CL:DO (( INDEX (1- (\, END)) (1- INDEX)) (VALUE (\, INITIAL-VALUE)) (TERMINUS (1- (\, START)))) ((= INDEX TERMINUS) VALUE) (SETQ VALUE (FUNCALL (\, FUNCTION) ((\, REF) (\, SEQUENCE) INDEX) VALUE))))) (DEFMACRO LIST-REDUCE (FUNCTION SEQUENCE START END INITIAL-VALUE) (BQUOTE (LET ((SEQUENCE (NTHCDR (\, START) (\, SEQUENCE)))) (CL:DO ((CL:COUNT (COND ((\, INITIAL-VALUE) (\, START)) (T (1+ (\, START)))) ( 1+ CL:COUNT)) (SEQUENCE (COND ((\, INITIAL-VALUE) SEQUENCE) (T (CDR SEQUENCE))) (CDR SEQUENCE)) (VALUE (COND ((\, INITIAL-VALUE) (\, INITIAL-VALUE)) (T (CAR SEQUENCE))) (FUNCALL (\, FUNCTION) VALUE (CAR SEQUENCE)))) ((= CL:COUNT (\, END)) VALUE))))) (DEFMACRO LIST-REDUCE-FROM-END (FUNCTION SEQUENCE START END INITIAL-VALUE) (BQUOTE (LET ((SEQUENCE ( NTHCDR (- (CL:LENGTH (\, SEQUENCE)) (\, END)) (CL:REVERSE (\, SEQUENCE))))) (CL:DO ((CL:COUNT (COND (( \, INITIAL-VALUE) (\, START)) (T (1+ (\, START)))) (1+ CL:COUNT)) (SEQUENCE (COND ((\, INITIAL-VALUE) SEQUENCE) (T (CDR SEQUENCE))) (CDR SEQUENCE)) (VALUE (COND ((\, INITIAL-VALUE) (\, INITIAL-VALUE)) (T (CAR SEQUENCE))) (FUNCALL (\, FUNCTION) (CAR SEQUENCE) VALUE))) ((= CL:COUNT (\, END)) VALUE))))) (DEFMACRO MUMBLE-DELETE (PRED) (BQUOTE (CL:DO ((INDEX START (1+ INDEX)) (JNDEX START) (NUMBER-ZAPPED 0 )) ((OR (= INDEX END) (= NUMBER-ZAPPED CL:COUNT)) (CL:DO ((INDEX INDEX (1+ INDEX)) (* " copy the rest of the vector" *) (JNDEX JNDEX (1+ JNDEX))) ((= INDEX CL:LENGTH) (SHRINK-VECTOR SEQUENCE JNDEX)) (SETF (AREF SEQUENCE JNDEX) (AREF SEQUENCE INDEX)))) (SETF (AREF SEQUENCE JNDEX) ( AREF SEQUENCE INDEX)) (COND ((\, PRED) (SETQ NUMBER-ZAPPED (1+ NUMBER-ZAPPED))) (T (SETQ JNDEX (1+ JNDEX))))))) (DEFMACRO MUMBLE-DELETE-FROM-END (PRED) (BQUOTE (CL:DO ((INDEX (1- END) (1- INDEX)) (* " find the losers" *) (NUMBER-ZAPPED 0) (LOSERS NIL) THIS-ELEMENT (TERMINUS (1- START))) ((OR (= INDEX TERMINUS) (= NUMBER-ZAPPED CL:COUNT)) (CL:DO ((LOSERS LOSERS) (* " delete the losers" *) (INDEX START (1+ INDEX)) (JNDEX START)) ((OR (NULL LOSERS) (= INDEX END)) (CL:DO ((INDEX INDEX (1+ INDEX)) (* " copy the rest of the vector" *) (JNDEX JNDEX (1+ JNDEX))) ((= INDEX CL:LENGTH) (SHRINK-VECTOR SEQUENCE JNDEX)) (SETF (AREF SEQUENCE JNDEX) (AREF SEQUENCE INDEX)))) (SETF (AREF SEQUENCE JNDEX) ( AREF SEQUENCE INDEX)) (COND ((= INDEX (CAR LOSERS)) (POP LOSERS)) (T (SETQ JNDEX (1+ JNDEX)))))) (SETQ THIS-ELEMENT (AREF SEQUENCE INDEX)) (COND ((\, PRED) (SETQ NUMBER-ZAPPED (1+ NUMBER-ZAPPED)) (PUSH LOSERS INDEX)))))) (DEFMACRO NORMAL-MUMBLE-DELETE NIL (BQUOTE (MUMBLE-DELETE (COND (TEST-NOT (NOT (FUNCALL TEST-NOT ITEM (FUNCALL KEY (AREF SEQUENCE INDEX))))) (T (FUNCALL TEST ITEM (FUNCALL KEY (AREF SEQUENCE INDEX)))))))) (DEFMACRO NORMAL-MUMBLE-DELETE-FROM-END NIL (BQUOTE (MUMBLE-DELETE-FROM-END (COND (TEST-NOT (NOT ( FUNCALL TEST-NOT ITEM (FUNCALL KEY THIS-ELEMENT)))) (T (FUNCALL TEST ITEM (FUNCALL KEY THIS-ELEMENT))) )))) (DEFMACRO LIST-DELETE (PRED) (BQUOTE (LET ((HANDLE (CONS NIL SEQUENCE))) (CL:DO ((CURRENT (NTHCDR START SEQUENCE) (CDR CURRENT)) (PREVIOUS (NTHCDR START HANDLE)) (INDEX START (1+ INDEX)) ( NUMBER-ZAPPED 0)) ((OR (= INDEX END) (= NUMBER-ZAPPED CL:COUNT)) (CDR HANDLE)) (COND ((\, PRED) ( RPLACD PREVIOUS (CDR CURRENT)) (SETQ NUMBER-ZAPPED (1+ NUMBER-ZAPPED))) (T (SETQ PREVIOUS (CDR PREVIOUS)))))))) (DEFMACRO LIST-DELETE-FROM-END (PRED) (BQUOTE (LET* ((CL:REVERSE (CL:NREVERSE (THE LIST SEQUENCE))) ( HANDLE (CONS NIL CL:REVERSE))) (CL:DO ((CURRENT (NTHCDR (- CL:LENGTH END) CL:REVERSE) (CDR CURRENT)) ( PREVIOUS (NTHCDR (- CL:LENGTH END) HANDLE)) (INDEX START (1+ INDEX)) (NUMBER-ZAPPED 0)) ((OR (= INDEX END) (= NUMBER-ZAPPED CL:COUNT)) (CL:NREVERSE (CDR HANDLE))) (COND ((\, PRED) (RPLACD PREVIOUS (CDR CURRENT)) (SETQ NUMBER-ZAPPED (1+ NUMBER-ZAPPED))) (T (SETQ PREVIOUS (CDR PREVIOUS)))))))) (DEFMACRO NORMAL-LIST-DELETE NIL (QUOTE (LIST-DELETE (COND (TEST-NOT (NOT (FUNCALL TEST-NOT ITEM ( FUNCALL KEY (CAR CURRENT))))) (T (FUNCALL TEST ITEM (FUNCALL KEY (CAR CURRENT)))))))) (DEFMACRO NORMAL-LIST-DELETE-FROM-END NIL (QUOTE (LIST-DELETE-FROM-END (COND (TEST-NOT (NOT (FUNCALL TEST-NOT ITEM (FUNCALL KEY (CAR CURRENT))))) (T (FUNCALL TEST ITEM (FUNCALL KEY (CAR CURRENT)))))))) (DEFMACRO IF-MUMBLE-DELETE NIL (BQUOTE (MUMBLE-DELETE (FUNCALL PREDICATE (FUNCALL KEY (AREF SEQUENCE INDEX)))))) (DEFMACRO IF-MUMBLE-DELETE-FROM-END NIL (BQUOTE (MUMBLE-DELETE-FROM-END (FUNCALL PREDICATE (FUNCALL KEY THIS-ELEMENT))))) (DEFMACRO IF-LIST-DELETE NIL (QUOTE (LIST-DELETE (FUNCALL PREDICATE (FUNCALL KEY (CAR CURRENT)))))) (DEFMACRO IF-LIST-DELETE-FROM-END NIL (QUOTE (LIST-DELETE-FROM-END (FUNCALL PREDICATE (FUNCALL KEY ( CAR CURRENT)))))) (DEFMACRO IF-NOT-MUMBLE-DELETE NIL (BQUOTE (MUMBLE-DELETE (NOT (FUNCALL PREDICATE (FUNCALL KEY (AREF SEQUENCE INDEX))))))) (DEFMACRO IF-NOT-MUMBLE-DELETE-FROM-END NIL (BQUOTE (MUMBLE-DELETE-FROM-END (NOT (FUNCALL PREDICATE ( FUNCALL KEY THIS-ELEMENT)))))) (DEFMACRO IF-NOT-LIST-DELETE NIL (QUOTE (LIST-DELETE (FUNCALL PREDICATE (FUNCALL KEY (CAR CURRENT))))) ) (DEFMACRO IF-NOT-LIST-DELETE-FROM-END NIL (QUOTE (LIST-DELETE-FROM-END (FUNCALL PREDICATE (FUNCALL KEY (CAR CURRENT)))))) (DEFMACRO MUMBLE-REMOVE-MACRO (BUMP LEFT BEGIN FINISH RIGHT PRED) (BQUOTE (CL:DO ((INDEX (\, BEGIN) (( \, BUMP) INDEX)) (RESULT (CL:DO ((INDEX (\, LEFT) ((\, BUMP) INDEX)) (RESULT (MAKE-SEQUENCE-LIKE SEQUENCE CL:LENGTH))) ((= INDEX (\, BEGIN)) RESULT) (SETF (AREF RESULT INDEX) (AREF SEQUENCE INDEX)))) (NEW-INDEX (\, BEGIN)) (NUMBER-ZAPPED 0) (THIS-ELEMENT)) ((OR (= INDEX (\, FINISH)) (= NUMBER-ZAPPED CL:COUNT)) (CL:DO ((INDEX INDEX ((\, BUMP) INDEX)) (NEW-INDEX NEW-INDEX ((\, BUMP) NEW-INDEX))) ((= INDEX (\, RIGHT)) (SHRINK-VECTOR RESULT NEW-INDEX)) (SETF (AREF RESULT NEW-INDEX) (AREF SEQUENCE INDEX )))) (SETQ THIS-ELEMENT (AREF SEQUENCE INDEX)) (COND ((\, PRED) (SETF (AREF RESULT NEW-INDEX) THIS-ELEMENT) (SETQ NEW-INDEX ((\, BUMP) NEW-INDEX))) (T (SETQ NUMBER-ZAPPED (1+ NUMBER-ZAPPED))))))) (DEFMACRO MUMBLE-REMOVE (PRED) (BQUOTE (MUMBLE-REMOVE-MACRO 1+ 0 START END CL:LENGTH (\, PRED)))) (DEFMACRO MUMBLE-REMOVE-FROM-END (PRED) (BQUOTE (LET ((SEQUENCE (COPY-SEQ SEQUENCE))) ( MUMBLE-DELETE-FROM-END (NOT (\, PRED)))))) (DEFMACRO NORMAL-MUMBLE-REMOVE NIL (BQUOTE (MUMBLE-REMOVE (COND (TEST-NOT (FUNCALL TEST-NOT ITEM ( FUNCALL KEY THIS-ELEMENT))) (T (NOT (FUNCALL TEST ITEM (FUNCALL KEY THIS-ELEMENT)))))))) (DEFMACRO NORMAL-MUMBLE-REMOVE-FROM-END NIL (BQUOTE (MUMBLE-REMOVE-FROM-END (COND (TEST-NOT (FUNCALL TEST-NOT ITEM (FUNCALL KEY THIS-ELEMENT))) (T (NOT (FUNCALL TEST ITEM (FUNCALL KEY THIS-ELEMENT))))))) ) (DEFMACRO IF-MUMBLE-REMOVE NIL (BQUOTE (MUMBLE-REMOVE (NOT (FUNCALL PREDICATE (FUNCALL KEY THIS-ELEMENT)))))) (DEFMACRO IF-MUMBLE-REMOVE-FROM-END NIL (BQUOTE (MUMBLE-REMOVE-FROM-END (NOT (FUNCALL PREDICATE ( FUNCALL KEY THIS-ELEMENT)))))) (DEFMACRO IF-NOT-MUMBLE-REMOVE NIL (BQUOTE (MUMBLE-REMOVE (FUNCALL PREDICATE (FUNCALL KEY THIS-ELEMENT ))))) (DEFMACRO IF-NOT-MUMBLE-REMOVE-FROM-END NIL (BQUOTE (MUMBLE-REMOVE-FROM-END (FUNCALL PREDICATE ( FUNCALL KEY THIS-ELEMENT))))) (DEFMACRO LIST-REMOVE-MACRO (PRED REVERSE?) (BQUOTE (LET* ((\,@ (COND (REVERSE? (QUOTE ((SEQUENCE ( CL:REVERSE (THE LIST SEQUENCE)))))) (T NIL))) (SPLICE (LIST NIL)) (RESULTS (CL:DO ((INDEX 0 (1+ INDEX) ) (BEFORE-START SPLICE)) ((= INDEX START) BEFORE-START) (SETQ SPLICE (CDR (RPLACD SPLICE (LIST (POP SEQUENCE)))))))) (CL:DO ((INDEX START (1+ INDEX)) (THIS-ELEMENT) (NUMBER-ZAPPED 0)) ((OR (= INDEX END) (= NUMBER-ZAPPED CL:COUNT)) (CL:DO ((INDEX INDEX (1+ INDEX))) ((NULL SEQUENCE) (\, (COND (REVERSE? ( QUOTE (CL:NREVERSE (THE LIST (CDR RESULTS))))) (T (QUOTE (CDR RESULTS)))))) (SETQ SPLICE (CDR (RPLACD SPLICE (LIST (POP SEQUENCE))))))) (SETQ THIS-ELEMENT (POP SEQUENCE)) (COND ((\, PRED) (SETQ SPLICE ( CDR (RPLACD SPLICE (LIST THIS-ELEMENT))))) (T (SETQ NUMBER-ZAPPED (1+ NUMBER-ZAPPED)))))))) (DEFMACRO LIST-REMOVE (PRED) (BQUOTE (LIST-REMOVE-MACRO (\, PRED) NIL))) (DEFMACRO LIST-REMOVE-FROM-END (PRED) (BQUOTE (LIST-REMOVE-MACRO (\, PRED) T))) (DEFMACRO NORMAL-LIST-REMOVE NIL (BQUOTE (LIST-REMOVE (COND (TEST-NOT (FUNCALL TEST-NOT ITEM (FUNCALL KEY THIS-ELEMENT))) (T (NOT (FUNCALL TEST ITEM (FUNCALL KEY THIS-ELEMENT)))))))) (DEFMACRO NORMAL-LIST-REMOVE-FROM-END NIL (BQUOTE (LIST-REMOVE-FROM-END (COND (TEST-NOT (FUNCALL TEST-NOT ITEM (FUNCALL KEY THIS-ELEMENT))) (T (NOT (FUNCALL TEST ITEM (FUNCALL KEY THIS-ELEMENT))))))) ) (DEFMACRO IF-LIST-REMOVE NIL (BQUOTE (LIST-REMOVE (NOT (FUNCALL PREDICATE (FUNCALL KEY THIS-ELEMENT))) ))) (DEFMACRO IF-LIST-REMOVE-FROM-END NIL (BQUOTE (LIST-REMOVE-FROM-END (NOT (FUNCALL PREDICATE (FUNCALL KEY THIS-ELEMENT)))))) (DEFMACRO IF-NOT-LIST-REMOVE NIL (BQUOTE (LIST-REMOVE (FUNCALL PREDICATE (FUNCALL KEY THIS-ELEMENT)))) ) (DEFMACRO IF-NOT-LIST-REMOVE-FROM-END NIL (BQUOTE (LIST-REMOVE-FROM-END (FUNCALL PREDICATE (FUNCALL KEY THIS-ELEMENT))))) (DEFMACRO SUBST-DISPATCH (PRED) (BQUOTE (COND ((CL:LISTP SEQUENCE) (COND (FROM-END (CL:NREVERSE ( LIST-SUBSTITUTE* (\, PRED) NEW (CL:REVERSE SEQUENCE) (- CL:LENGTH END) (- CL:LENGTH START) CL:COUNT KEY TEST TEST-NOT OLD))) (T (LIST-SUBSTITUTE* (\, PRED) NEW SEQUENCE START END CL:COUNT KEY TEST TEST-NOT OLD)))) (T (COND (FROM-END (VECTOR-SUBSTITUTE* (\, PRED) NEW SEQUENCE -1 (1- CL:LENGTH) -1 CL:LENGTH (1- END) (1- START) CL:COUNT KEY TEST TEST-NOT OLD)) (T (VECTOR-SUBSTITUTE* (\, PRED) NEW SEQUENCE 1 0 CL:LENGTH CL:LENGTH START END CL:COUNT KEY TEST TEST-NOT OLD))))))) (DEFMACRO VECTOR-POSITION (ITEM SEQUENCE) (BQUOTE (LET ((INCREMENTER (CL:IF FROM-END -1 1)) (START ( CL:IF FROM-END (1- END) START)) (END (CL:IF FROM-END (1- START) END))) (CL:DO ((INDEX START (+ INDEX INCREMENTER))) ((= INDEX END) NIL) (CL:IF TEST-NOT (CL:IF (FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY ( AREF (\, SEQUENCE) INDEX))) (RETURN INDEX)) (CL:IF (FUNCALL TEST (\, ITEM) (FUNCALL KEY (AREF (\, SEQUENCE) INDEX))) (RETURN INDEX))))))) (DEFMACRO VECTOR-POSITION-IF (TEST SEQUENCE) (BQUOTE (LET ((INCREMENTER (COND (FROM-END -1) (T 1))) ( START (COND (FROM-END (1- END)) (T START))) (END (COND (FROM-END (1- START)) (T END)))) (CL:DO ((INDEX START (+ INDEX INCREMENTER))) ((= INDEX END) NIL) (COND ((FUNCALL (\, TEST) (FUNCALL KEY (AREF (\, SEQUENCE) INDEX))) (RETURN INDEX)) (T NIL)))))) (DEFMACRO LIST-POSITION (ITEM SEQUENCE) (BQUOTE (CL:IF FROM-END (CL:DO ((SEQUENCE (NTHCDR (- ( CL:LENGTH SEQUENCE) END) (REVERSE (THE LIST (\, SEQUENCE))))) (INDEX (1- END) (1- INDEX))) ((OR (= INDEX (1- START)) (NULL SEQUENCE)) NIL) (CL:IF TEST-NOT (CL:IF (FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY (POP SEQUENCE))) (RETURN INDEX)) (CL:IF (FUNCALL TEST (\, ITEM) (FUNCALL KEY (POP SEQUENCE))) ( RETURN INDEX)))) (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) (INDEX START (1+ INDEX))) ((OR (= INDEX END) (NULL SEQUENCE)) NIL) (CL:IF TEST-NOT (CL:IF (FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY (POP SEQUENCE))) (RETURN INDEX)) (CL:IF (FUNCALL TEST (\, ITEM) (FUNCALL KEY (POP SEQUENCE))) (RETURN INDEX ))))))) (DEFMACRO LIST-POSITION-IF (TEST SEQUENCE) (BQUOTE (COND (FROM-END (CL:DO ((SEQUENCE (NTHCDR (- CL:LENGTH END) (CL:REVERSE (THE LIST (\, SEQUENCE))))) (INDEX (1- END) (1- INDEX))) ((OR (= INDEX (1- START)) (NULL SEQUENCE)) NIL) (COND ((FUNCALL (\, TEST) (FUNCALL KEY (POP SEQUENCE))) (RETURN INDEX)) (T NIL)))) (T (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) (INDEX START (1+ INDEX))) ((OR (= INDEX END) (NULL SEQUENCE)) NIL) (COND ((FUNCALL (\, TEST) (FUNCALL KEY (POP SEQUENCE))) (RETURN INDEX)) (T NIL))))))) (DEFMACRO VECTOR-POSITION-IF-NOT (TEST SEQUENCE) (BQUOTE (LET ((INCREMENTER (COND (FROM-END -1) (T 1)) ) (START (COND (FROM-END (1- END)) (T START))) (END (COND (FROM-END (1- START)) (T END)))) (CL:DO (( INDEX START (+ INDEX INCREMENTER))) ((= INDEX END) NIL) (COND ((NOT (FUNCALL (\, TEST) (FUNCALL KEY ( AREF (\, SEQUENCE) INDEX)))) (RETURN INDEX)) (T NIL)))))) (DEFMACRO LIST-POSITION-IF-NOT (TEST SEQUENCE) (BQUOTE (COND (FROM-END (CL:DO ((SEQUENCE (NTHCDR (- CL:LENGTH END) (CL:REVERSE (THE LIST (\, SEQUENCE))))) (INDEX (1- END) (1- INDEX))) ((OR (= INDEX (1- START)) (NULL SEQUENCE)) NIL) (COND ((NOT (FUNCALL (\, TEST) (FUNCALL KEY (POP SEQUENCE)))) (RETURN INDEX)) (T NIL)))) (T (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) (INDEX START (1+ INDEX))) ((OR ( = INDEX END) (NULL SEQUENCE)) NIL) (COND ((NOT (FUNCALL (\, TEST) (FUNCALL KEY (POP SEQUENCE)))) ( RETURN INDEX)) (T NIL))))))) (DEFMACRO VECTOR-COUNT (ITEM SEQUENCE) (BQUOTE (CL:DO ((INDEX START (1+ INDEX)) (CL:COUNT 0)) ((= INDEX END) CL:COUNT) (COND (TEST-NOT (COND ((FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY (AREF (\, SEQUENCE) INDEX))) (SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))) (T (COND ((FUNCALL TEST (\, ITEM) (FUNCALL KEY (AREF (\, SEQUENCE) INDEX))) (SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))))))) (DEFMACRO LIST-COUNT (ITEM SEQUENCE) (BQUOTE (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) (INDEX START (1+ INDEX)) (CL:COUNT 0)) ((OR (= INDEX END) (NULL SEQUENCE)) CL:COUNT) (COND (TEST-NOT (COND (( FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY (POP SEQUENCE))) (SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))) (T ( COND ((FUNCALL TEST (\, ITEM) (FUNCALL KEY (POP SEQUENCE))) (SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))))) )) (DEFMACRO VECTOR-COUNT-IF (PREDICATE SEQUENCE) (BQUOTE (CL:DO ((INDEX START (1+ INDEX)) (CL:COUNT 0)) ((= INDEX END) CL:COUNT) (COND ((FUNCALL (\, PREDICATE) (FUNCALL KEY (AREF (\, SEQUENCE) INDEX))) ( SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))))) (DEFMACRO LIST-COUNT-IF (PREDICATE SEQUENCE) (BQUOTE (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) ( INDEX START (1+ INDEX)) (CL:COUNT 0)) ((OR (= INDEX END) (NULL SEQUENCE)) CL:COUNT) (COND ((FUNCALL ( \, PREDICATE) (FUNCALL KEY (POP SEQUENCE))) (SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))))) (DEFMACRO VECTOR-COUNT-IF-NOT (PREDICATE SEQUENCE) (BQUOTE (CL:DO ((INDEX START (1+ INDEX)) (CL:COUNT 0)) ((= INDEX END) CL:COUNT) (COND ((NOT (FUNCALL (\, PREDICATE) (FUNCALL KEY (AREF (\, SEQUENCE) INDEX)))) (SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))))) (DEFMACRO LIST-COUNT-IF-NOT (PREDICATE SEQUENCE) (BQUOTE (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE) )) (INDEX START (1+ INDEX)) (CL:COUNT 0)) ((OR (= INDEX END) (NULL SEQUENCE)) CL:COUNT) (COND ((NOT ( FUNCALL (\, PREDICATE) (FUNCALL KEY (POP SEQUENCE)))) (SETQ CL:COUNT (1+ CL:COUNT))) (T NIL))))) (DEFMACRO VECTOR-FIND (ITEM SEQUENCE) (BQUOTE (LET ((INCREMENTER (COND (FROM-END -1) (T 1))) (START ( COND (FROM-END (1- END)) (T START))) (END (COND (FROM-END (1- START)) (T END)))) (CL:DO ((INDEX START (+ INDEX INCREMENTER)) (CURRENT)) ((= INDEX END) NIL) (SETQ CURRENT (AREF (\, SEQUENCE) INDEX)) (COND (TEST-NOT (COND ((NOT (FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY CURRENT))) (RETURN CURRENT)) (T NIL))) (T (COND ((FUNCALL TEST (\, ITEM) (FUNCALL KEY CURRENT)) (RETURN CURRENT)) (T NIL)))))))) (DEFMACRO LIST-FIND (ITEM SEQUENCE) (BQUOTE (COND (FROM-END (CL:DO ((SEQUENCE (NTHCDR (- (CL:LENGTH ( \, SEQUENCE)) END) (CL:REVERSE (THE LIST (\, SEQUENCE))))) (INDEX (1- END) (1- INDEX)) (CURRENT)) ((OR (= INDEX (1- START)) (NULL SEQUENCE)) NIL) (SETQ CURRENT (POP SEQUENCE)) (COND (TEST-NOT (COND ((NOT (FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY CURRENT))) (RETURN CURRENT)) (T NIL))) (T (COND ((FUNCALL TEST (\, ITEM) (FUNCALL KEY CURRENT)) (RETURN CURRENT)) (T NIL)))))) (T (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) (INDEX START (1+ INDEX)) (CURRENT)) ((OR (= INDEX END) (NULL SEQUENCE)) NIL) ( SETQ CURRENT (POP SEQUENCE)) (COND (TEST-NOT (COND ((NOT (FUNCALL TEST-NOT (\, ITEM) (FUNCALL KEY CURRENT))) (RETURN CURRENT)) (T NIL))) (T (COND ((FUNCALL TEST (\, ITEM) (FUNCALL KEY CURRENT)) ( RETURN CURRENT)) (T NIL))))))))) (DEFMACRO VECTOR-FIND-IF (TEST SEQUENCE) (BQUOTE (LET ((INCREMENTER (COND (FROM-END -1) (T 1))) (START (COND (FROM-END (1- END)) (T START))) (END (COND (FROM-END (1- START)) (T END)))) (CL:DO ((INDEX START (+ INDEX INCREMENTER)) (CURRENT)) ((= INDEX END) NIL) (SETQ CURRENT (AREF (\, SEQUENCE) INDEX)) (COND ((FUNCALL (\, TEST) (FUNCALL KEY CURRENT)) (RETURN CURRENT)) (T NIL)))))) (DEFMACRO LIST-FIND-IF (TEST SEQUENCE) (BQUOTE (COND (FROM-END (CL:DO ((SEQUENCE (NTHCDR (- CL:LENGTH END) (CL:REVERSE (THE LIST (\, SEQUENCE))))) (INDEX (1- END) (1- INDEX)) (CURRENT)) ((OR (= INDEX (1- START)) (NULL SEQUENCE)) NIL) (SETQ CURRENT (POP SEQUENCE)) (COND ((FUNCALL (\, TEST) (FUNCALL KEY CURRENT)) (RETURN CURRENT)) (T NIL)))) (T (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) (INDEX START (1+ INDEX)) (CURRENT)) ((OR (= INDEX END) (NULL SEQUENCE)) NIL) (SETQ CURRENT (POP SEQUENCE)) (COND ( (FUNCALL (\, TEST) (FUNCALL KEY CURRENT)) (RETURN CURRENT)) (T NIL))))))) (DEFMACRO VECTOR-FIND-IF-NOT (TEST SEQUENCE) (BQUOTE (LET ((INCREMENTER (COND (FROM-END -1) (T 1))) ( START (COND (FROM-END (1- END)) (T START))) (END (COND (FROM-END (1- START)) (T END)))) (CL:DO ((INDEX START (+ INDEX INCREMENTER)) (CURRENT)) ((= INDEX END) NIL) (SETQ CURRENT (AREF (\, SEQUENCE) INDEX)) (COND ((NOT (FUNCALL (\, TEST) (FUNCALL KEY CURRENT))) (RETURN CURRENT)) (T NIL)))))) (DEFMACRO LIST-FIND-IF-NOT (TEST SEQUENCE) (BQUOTE (COND (FROM-END (CL:DO ((SEQUENCE (NTHCDR (- CL:LENGTH END) (CL:REVERSE (THE LIST (\, SEQUENCE))))) (INDEX (1- END) (1- INDEX)) (CURRENT)) ((OR (= INDEX (1- START)) (NULL SEQUENCE)) NIL) (SETQ CURRENT (POP SEQUENCE)) (COND ((NOT (FUNCALL (\, TEST) ( FUNCALL KEY CURRENT))) (RETURN CURRENT)) (T NIL)))) (T (CL:DO ((SEQUENCE (NTHCDR START (\, SEQUENCE))) (INDEX START (1+ INDEX)) (CURRENT)) ((OR (= INDEX END) (NULL SEQUENCE)) NIL) (SETQ CURRENT (POP SEQUENCE)) (COND ((NOT (FUNCALL (\, TEST) (FUNCALL KEY CURRENT))) (RETURN CURRENT)) (T NIL))))))) (DEFMACRO MATCH-VARS (&REST BODY) (BQUOTE (LET ((INC (COND (FROM-END -1) (T 1))) (START1 (COND ( FROM-END (1- END1)) (T START1))) (START2 (COND (FROM-END (1- END2)) (T START2))) (END1 (COND (FROM-END (1- START1)) (T END1))) (END2 (COND (FROM-END (1- START2)) (T END2)))) (\,@ BODY)))) (DEFMACRO MATCHIFY-LIST (SEQUENCE START CL:LENGTH END) (BQUOTE (SETQ (\, SEQUENCE) (COND (FROM-END ( NTHCDR (- (\, CL:LENGTH) (\, START) 1) (CL:REVERSE (THE LIST (\, SEQUENCE))))) (T (NTHCDR (\, START) ( \, SEQUENCE))))))) (DEFMACRO IF-MISMATCH (ELT1 ELT2) (BQUOTE (COND ((= INDEX1 END1) (RETURN (COND ((= INDEX2 END2) NIL) ( T (COND (FROM-END (1+ INDEX1)) (T INDEX1)))))) ((= INDEX2 END2) (RETURN (COND (FROM-END (1+ INDEX1)) ( T INDEX1)))) (TEST-NOT (COND ((FUNCALL TEST-NOT (FUNCALL KEY (\, ELT1)) (FUNCALL KEY (\, ELT2))) ( RETURN (COND (FROM-END (1+ INDEX1)) (T INDEX1)))) (T NIL))) (T (COND ((NOT (FUNCALL TEST (FUNCALL KEY (\, ELT1)) (FUNCALL KEY (\, ELT2)))) (RETURN (COND (FROM-END (1+ INDEX1)) (T INDEX1)))) (T NIL)))))) (DEFMACRO MUMBLE-MUMBLE-MISMATCH NIL (BQUOTE (CL:DO ((INDEX1 START1 (+ INDEX1 INC)) (INDEX2 START2 (+ INDEX2 INC))) (NIL) (IF-MISMATCH (AREF SEQUENCE1 INDEX1) (AREF SEQUENCE2 INDEX2))))) (DEFMACRO MUMBLE-LIST-MISMATCH NIL (BQUOTE (CL:DO ((INDEX1 START1 (+ INDEX1 INC)) (INDEX2 START2 (+ INDEX2 INC))) (NIL) (IF-MISMATCH (AREF SEQUENCE1 INDEX1) (POP SEQUENCE2))))) (DEFMACRO LIST-MUMBLE-MISMATCH NIL (BQUOTE (CL:DO ((INDEX1 START1 (+ INDEX1 INC)) (INDEX2 START2 (+ INDEX2 INC))) (NIL) (IF-MISMATCH (POP SEQUENCE1) (AREF SEQUENCE2 INDEX2))))) (DEFMACRO LIST-LIST-MISMATCH NIL (BQUOTE (CL:DO ((INDEX1 START1 (+ INDEX1 INC)) (INDEX2 START2 (+ INDEX2 INC))) (NIL) (IF-MISMATCH (POP SEQUENCE1) (POP SEQUENCE2))))) (DEFMACRO COMPARE-ELEMENTS (ELT1 ELT2) (BQUOTE (COND (TEST-NOT (COND ((FUNCALL TEST-NOT (FUNCALL KEY ( \, ELT1)) (FUNCALL KEY (\, ELT2))) (RETURN NIL)) (T T))) (T (COND ((NOT (FUNCALL TEST (FUNCALL KEY (\, ELT1)) (FUNCALL KEY (\, ELT2)))) (RETURN NIL)) (T T)))))) (DEFMACRO SEARCH-COMPARE-LIST-LIST (MAIN SUB) (BQUOTE (CL:DO ((MAIN (\, MAIN) (CDR MAIN)) (JNDEX START1 (1+ JNDEX)) (SUB (NTHCDR START1 (\, SUB)) (CDR SUB))) ((OR (NULL MAIN) (NULL SUB) (= END1 JNDEX )) T) (COMPARE-ELEMENTS (CAR MAIN) (CAR SUB))))) (DEFMACRO SEARCH-COMPARE-LIST-VECTOR (MAIN SUB) (BQUOTE (CL:DO ((MAIN (\, MAIN) (CDR MAIN)) (INDEX START1 (1+ INDEX))) ((OR (NULL MAIN) (= INDEX END1)) T) (COMPARE-ELEMENTS (CAR MAIN) (AREF (\, SUB) INDEX))))) (DEFMACRO SEARCH-COMPARE-VECTOR-LIST (MAIN SUB INDEX) (BQUOTE (CL:DO ((SUB (NTHCDR START1 (\, SUB)) ( CDR SUB)) (JNDEX START1 (1+ JNDEX)) (INDEX (\, INDEX) (1+ INDEX))) ((OR (= END1 JNDEX) (NULL SUB)) T) (COMPARE-ELEMENTS (AREF (\, MAIN) INDEX) (CAR SUB))))) (DEFMACRO SEARCH-COMPARE-VECTOR-VECTOR (MAIN SUB INDEX) (BQUOTE (CL:DO ((INDEX (\, INDEX) (1+ INDEX)) (SUB-INDEX START1 (1+ SUB-INDEX))) ((= SUB-INDEX END1) T) (COMPARE-ELEMENTS (AREF (\, MAIN) INDEX) ( AREF (\, SUB) SUB-INDEX))))) (DEFMACRO SEARCH-COMPARE (MAIN-TYPE MAIN SUB INDEX) (COND ((EQ MAIN-TYPE (QUOTE LIST)) (BQUOTE ( SEQ-DISPATCH (\, SUB) (SEARCH-COMPARE-LIST-LIST (\, MAIN) (\, SUB)) (SEARCH-COMPARE-LIST-VECTOR (\, MAIN) (\, SUB))))) (T (BQUOTE (SEQ-DISPATCH (\, SUB) (SEARCH-COMPARE-VECTOR-LIST (\, MAIN) (\, SUB) ( \, INDEX)) (SEARCH-COMPARE-VECTOR-VECTOR (\, MAIN) (\, SUB) (\, INDEX))))))) (DEFMACRO LIST-SEARCH (MAIN SUB) (BQUOTE (CL:DO ((MAIN (NTHCDR START2 (\, MAIN)) (CDR MAIN)) (INDEX2 START2 (1+ INDEX2)) (TERMINUS (- END2 (- END1 START1))) (LAST-MATCH NIL)) ((> INDEX2 TERMINUS) LAST-MATCH) (COND ((SEARCH-COMPARE LIST MAIN (\, SUB) INDEX2) (COND (FROM-END (SETQ LAST-MATCH INDEX2) ) (T (RETURN INDEX2)))) (T NIL))))) (DEFMACRO VECTOR-SEARCH (MAIN SUB) (BQUOTE (CL:DO ((INDEX2 START2 (1+ INDEX2)) (TERMINUS (- END2 (- END1 START1))) (LAST-MATCH NIL)) ((> INDEX2 TERMINUS) LAST-MATCH) (COND ((SEARCH-COMPARE VECTOR (\, MAIN) (\, SUB) INDEX2) (COND (FROM-END (SETQ LAST-MATCH INDEX2)) (T (RETURN INDEX2)))) (T NIL))))) (PUTPROPS CL:ELT SETFN CL:\SETELT) (PUTPROPS CMLSEQ COPYRIGHT ("Xerox Corporation" 1985 1986)) NIL