USER ! LISPIN-PACKAGE SYSTEM,EXPORT!,QUOTE!,LOOP! ! SYSTEMLOOP-FINISH!0DEFINE-LOOP-MACRO!0DEFINE-LOOP-PATH!0DEFINE-LOOP-SEQUENCE-PATH,EXPORT-! 0LOOP-TEQUAL! 0LOOP-TASSOC! 0LOOP-TMEMBER! 0*LOOP-USE-SYSTEM-DESTRUCTURING?*!0LOOP-NAMED-VARIABLE0LOOP-SIMPLE-ERROR! 0LOOP-SIMPLEP!0LOOP-SIMPLEP-1!0LOOP-SEQUENCER!0LOOP-SEQUENCE-ELEMENTS-PATH  ,COPY-LIST,ERROR LOOP: ~S ~A LOOP: ~A-,WARN!,STRING LOOP: -- ~{~S~^ ~} LOOP: ,POP!0*LOOP-SOURCE-CODE*-0LOOPVAR-,GENTEMP!,PROG17!,SETQ0DESETQ!,CAR!,CDR!,CADR!,CDDR!,CAAR!,CDAR!0*LOOP-DESETQ-TEMPORARY* LOOP-DESETQ-AB!0*LOOP-PROG-NAMES* ,RETURN-FROM!,RETURN! KEYWORDTEST. ¬ a loop keyword - define-loop-macro,DEFMACRO ,&WHOLE! 0WHOLE-FORM ,&ENVIRONMENT!0ENV,&REST!0KEYWORDS-AND-FORMS!,DECLARE!,IGNOREM !0LOOP-TRANSLATEKL!,GO!0END-LOOP!0*LOOP-MACRO-ENVIRONMENT*!,WHEN!,ORQR!0*LOOP-BEFORE-LOOP*!0*LOOP-AFTER-BODY*! 0*LOOP-BODY*!0*LOOP-DUPLICATE-CODE*!0*LOOP-NEVER-STEPPED-VARIABLE* LOOP-ITER-FLAG-!,UNLESS!,PROGN,COND>!0*LOOP-ITERATION-VARIABLES*!0*LOOP-ITERATION-VARIABLEP*!0*LOOP-VARIABLES*!0*LOOP-NODECLARE*!0*LOOP-NAMED-VARIABLES*!0*LOOP-DECLARATIONS*!0*LOOP-DESETQ-CROCKS*!0*LOOP-VARIABLE-STACK*!0*LOOP-DECLARATION-STACK*!0*LOOP-DESETQ-STACK*!0*LOOP-PROLOGUE*!0*LOOP-WRAPPERS*!0*LOOP-EMITTED-BODY?*!0*LOOP-EPILOGUE*!0*LOOP-AFTER-EPILOGUE*!0*LOOP-CONDITIONALS*!0*LOOP-WHEN-IT-VARIABLE*!0*LOOP-COLLECT-CRUFT* !Hanging conditional in loop macro,BLOCK,LET,TAGBODY! 0NEXT-LOOPQoQRRN!,DO!,AND!0ELSE 5secondary clause misplaced at top level in LOOP macro unknown keyword in LOOP macro@LOOP: The use of multiple forms with an implicit PROGN in this context is considered obsolete, but is still supported for the time being. If you did not intend to use multiple forms here, you probably omitted a DO. If the use of multiple forms was intentional, put a PROGN in your code. The offending clause -- ~{~S~^ ~} !,FIXNUM!,INTEGER!,NUMBER!0LOOP-FLOATING-POINT-TYPES!0FLONUM!,FLOAT LOOP-IGNORE-O /Duplicated iteration variable somewhere in LOOP !Duplicated var in LOOP bind block Bad variable somewhere in LOOP LOOP-DESTRUCTURE-,TYPE!0NOTYPE can't hack this!0LOOP-DECLARE-VARIABLE LOOP-BIND- stuyqr More ELSEs than WHENs Bad name for your loop construct NAMED clause occurs too late &Too many names for your loop construct $Bad varlist to nodeclare loop clause0MAXMIN!,LIST!0SUM :LOOP internal error: ~S is an unknown collecting keyword.0INTO "incompatible LOOP collection types $~A and ~A Unequal data types into ~A LOOP-MAXMIN-su LOOPVAR- LOOP-MAXMIN-FL-!,1+-!,T!,+sw!,MAX!,!,IF,RPLACD,LASTD!,CDDDR!,CDDDDR #not allowed inside LOOP conditionalQR0IT!,NOT!,=!0WITH Garbage where = expected!0ALWAYS!0THEREIS9!,NULL!,EQQI\AB ECFD,CAAAR,CAADR,CADAR,CADDR,CDAAR,CDADR,CDDAR,CAAAAR,CAAADR,CAADAR,CAADDR,CADAAR,CADADR,CADDAR,CADDDR,CDAAAR,CDAADR,CDADAR,CDADDR,CDDAAR,CDDADR,CDDDAR ,Iteration is not allowed to follow body code 0Iteration starting inside of conditional in LOOP!0FOR +Unknown keyword in FOR or AS clause in LOOP LOOP-REPEAT-!0REPEAT,PLUSP!,1- LOOP-IT-0THEN  *found where THEN expected in FOR ... FIRST!,FIRST!,BY!0IN!0ON!,FUNCTIONB-,FUNCALL LOOP-FN- LOOP-LIST-!0FROM!0UPFROM!0DOWNFROM!0TO!0UPTO!0DOWNTO!0ABOVE!0BELOW!0EACH,THE!0*LOOP-PATH-KEYWORD-ALIST*!0BEING #Malformed BEING EACH clause in LOOP!0OF!0ITS0HIS0HER0THEIR -found where ITS or EACH expected in LOOP path !0...0DEFAULT-LOOP-PATH Undefined LOOP iteration path unused USING variables0USING USING used in illegal context &bad variable pair in path USING phrase +Duplicated var substitition in USING phrase! 0LOOP-ADD-PATH ,EVAL-WHEN ,EVAL,LOAD,COMPILE Sequence duplicated in LOOP path 8Iteration start redundantly specified in LOOP sequencing0DOWN!0UP 5Endtest redundantly specified in LOOP sequencing path LOOP-STEP-BY- Illegal prep in sequence path 7Conflicting stepping directions in LOOP sequencing path "Missing OF phrase in sequence path LOOP-SEQ-LIMIT-!0ARGS!,>= "Don't know where to start stepping!,<=!,-0INDEX!,SEQUENCE Can't step sequence inclusively2<JCOUNT ,CONCATENATE!0LOOP-MAKE-PSETQ!0LOOP-MAKE-SETQ!0LOOP-DESETQ-INTERNAL!0LOOP-MAKE-DESETQ,STRING=5P!0LOOP-TRANSLATE-1,DELETE!0LOOP-OUTPUT-GROUP!0LOOP-MAKE-VARIABLE!!0LOOP-OPTIMIZE-DUPLICATED-CODE-ETC!0LOOP-BIND-BLOCK!0LOOP-HACK-ITERATION6!0LOOP-GET-PROGN-1,COERCE!0LOOP-TYPED-INIT4!0LOOP-CONSTANTP!0LOOP-MAKE-CONDITIONALIZATION!0LOOP-PSEUDO-BODY!0LOOP-GET-PROGN!0LOOP-EMIT-BODY! 0LOOP-GET-FORM!0LOOP-CONSTRUCT-RETURN!,MIN!,NCONC!,APPEND!,COUNT!0LOOP-OPTIONAL-TYPE!0LOOP-MAKE-ITERATION-VARIABLE!0LOOP-TYPED-ARITH! 0LOOP-CDRIFY!0LOOP-WHEN-IT-VARIABLE:!0LOOP-END-TESTIFY!0LOOP-GATHER-PREPS;!0LOOP-MAYBE-BIND-FORM80%INITu  0WARN-VERSION5.0) !0MM-0LOOP-COPYLIST* -0LOOP-SIMPLE-ERROR - 0LOOP-WARN -0LOOP-POP-SOURCE - 0LOOP-GENTEMP !0MF-! 0*MAKE-SPECIAL-7 U!,BOUNDP-7 @7-G - - - !0*MAKE-CONSTANT-!0+LOOP-KEYWORD-ALIST+-0NAMED! 0LOOP-DO-NAMED 0INITIALLY!0LOOP-DO-INITIALLY0FINALLY!0LOOP-DO-FINALLY 0NODECLARE!0LOOP-NODECLAREp! 0LOOP-DO-DO0DOINGI!0LOOP-DO-RETURN 0COLLECT!0LOOP-DO-COLLECT{  0COLLECTING{ տ  0APPENDINGտ վ 0NCONCINGվ 0COUNTING || 0SUMMING| 0MAXIMIZEՀ 0MINIMIZEս !0LOOP-DO-ALWAYS 0NEVER~!0LOOP-DO-THEREIS !0WHILE! 0LOOP-DO-WHILE !0UNTIL~ T! 0LOOP-DO-WHENT [~[! 0LOOP-DO-WITH -!0+LOOP-ITERATION-KEYWORD-ALIST+- ! 0LOOP-DO-FOR0AS!0LOOP-DO-REPEAT -!0+LOOP-FOR-KEYWORD-ALIST+-!0LOOP-FOR-EQUALS!0LOOP-FOR-FIRST !0LOOP-LIST-STEPPERA !0LOOP-FOR-ARITHMETIC !0LOOP-FOR-BEING-H-S- U- @-a-_-b-`-d-e-c-f-g-h-V-X-W-j-k-l-m-Z-i-]-^-n->-Y U-Y @Y - -4 -5 -6 !0SETVV  !0PUTPROP-1&Makes KEYWORD, which is a LOOP keyword, into a Lisp macro that may introduce a LOOP form. This facility exists mostly for diehard users of a predecessor of LOOP. Unconstrained use is not advised, as it tends to decrease the transportability of the code and needlessly uses up a function name.!-0FUNCTION-DOCUMENTATION -1 -. -/Causes the iteration to terminate "normally", the same as implicit termination by an iteration driving clause, or by use of WHILE or UNTIL -- the epilogue code (if any) will be run, and any implicitly collected result will be returned as the value of the LOOP. -/ -P - - - - - - - - --v U-v @v-wx ,SHORT-FLOAT ,SINGLE-FLOAT ,DOUBLE-FLOAT ,LONG-FLOAT R ,*0.0),LEAST-POSITIVE-LONG-FLOAT - - - -z - - - -! -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -0 -91-9 U-9 @9-,/=},ASH,EQUAL,ATOM@?,PROG2qU!,AREF!,CHAR!,SCHAR!,SBIT!,SVREF -:2 -3  -4 -5 -6 -7 -8 -9 -: -8; -< -= -> -2b(DEFINE-LOOP-PATH NAMES PATH-FUNCTION LIST-OF-ALLOWABLE-PREPOSITIONS DATUM-1 DATUM-2 ...) Defines PATH-FUNCTION to be the handler for the path(s) NAMES, which may be either a symbol or a list of symbols. LIST-OF-ALLOWABLE-PREPOSITIONS contains a list of prepositions allowed in NAMES. DATUM-i are optional; they are passed on to PATH-FUNCTION as a list. -2? -;@ -<A -3Defines a sequence iiteration path. PATH-NAME-OR-NAMES is either an atomic path name or a list of path names. FETCHFUN is a function of two arguments, the sequence and the index of the item to be fetched. Indexing is assumed to be zero-origined. SIZEFUN is a function of one argument, the sequence; it should return the number of elements in the sequence. SEQUENCE-TYPE is the name of the data-type of the sequence, and ELEMENT-TYPE is the name of the data-type of the elements of the sequence. -3B -!G1216C ,MAPC,SYMBOL-FUNCTION-- 0ELEMENT0ELEMENTS,ELT!,LENGTH 0VECTOR-ELEMENT0VECTOR-ELEMENTS 0ARRAY-ELEMENT0ARRAY-ELEMENTS,VECTOR 0SIMPLE-VECTOR-ELEMENT0SIMPLE-VECTOR-ELEMENTS0SIMPLE-GENERAL-VECTOR-ELEMENT0SIMPLE-GENERAL-VECTOR-ELEMENTS0SIMPLE-VECTOR-LENGTH ,SIMPLE-VECTOR 0BITS!,BIT0BIT-VECTOR-ELEMENT0BIT-VECTOR-ELEMENTS0BIT-VECTOR-LENGTH ,BIT-VECTOR0SIMPLE-BIT-VECTOR-ELEMENT0SIMPLE-BIT-VECTOR-ELEMENTS0SIMPLE-BIT-VECTOR-LENGTH,SIMPLE-BIT-VECTOR  ,CHARACTER 0CHARACTERS0STRING-ELEMENT0STRING-ELEMENTS 0STRING-LENGTH=! 0BASE-CHAR0SIMPLE-STRING-ELEMENT0SIMPLE-STRING-ELEMENTS0SIMPLE-STRING-LENGTH ,SIMPLE-STRING