(FILECREATED "12-Oct-86 17:31:06" {ERIS}<LISPCORE>SOURCES>CMLSEQMAPPERS.;7 28037  

      changes to:  (FUNCTIONS CL:MAP)

      previous date: "29-Sep-86 18:47:41" {ERIS}<LISPCORE>SOURCES>CMLSEQMAPPERS.;6)


(* "
Copyright (c) 1986 by Xerox Corporation.  All rights reserved.
")

(PRETTYCOMPRINT CMLSEQMAPPERSCOMS)

(RPAQQ CMLSEQMAPPERSCOMS ((DECLARE: EVAL@COMPILE DONTCOPY (FILES CMLSEQCOMMON))
                          (FUNCTIONS ELT-SLICE MAP-FOR-EFFECT %%MAP-FOR-EFFECT 
                                 %%MAP-SINGLE-FOR-EFFECT MAP-TO-LIST %%MAP-TO-LIST 
                                 %%MAP-SINGLE-TO-LIST MAP-TO-SIMPLE %%MAP-TO-SIMPLE 
                                 %%MAP-SINGLE-TO-SIMPLE CL:MAP)
                          (OPTIMIZERS %%MAP-FOR-EFFECT %%MAP-TO-LIST %%MAP-TO-SIMPLE CL:MAP)
                          (FUNCTIONS %%SINGLE-SOME CL:SOME %%SINGLE-EVERY CL:EVERY %%SINGLE-NOTANY 
                                 CL:NOTANY %%SINGLE-NOTEVERY CL:NOTEVERY)
                          (OPTIMIZERS CL:SOME CL:EVERY CL:NOTANY CL:NOTEVERY)
                          (FUNCTIONS LIST-REDUCE-FROM-END LIST-REDUCE MUMBLE-REDUCE-FROM-END 
                                 MUMBLE-REDUCE REDUCE)
                          (PROP FILETYPE CMLSEQMAPPERS)))
(DECLARE: EVAL@COMPILE DONTCOPY 
(FILESLOAD CMLSEQCOMMON)
)
(DEFMACRO ELT-SLICE (SEQUENCES N) (BQUOTE (CL:MAPCAR (FUNCTION (CL:LAMBDA (SEQ)
                                                                      (CL:ELT SEQ (\, N))))
                                                 (\, SEQUENCES))))

(DEFMACRO MAP-FOR-EFFECT NIL (BQUOTE (CL:IF (NULL MORE-SEQUENCES)
                                            (SEQ-DISPATCH FIRST-SEQUENCE (MAPC FIRST-SEQUENCE 
                                                                               FUNCTION)
                                                   (DOTIMES (I (VECTOR-LENGTH FIRST-SEQUENCE))
                                                          (FUNCALL FUNCTION (AREF FIRST-SEQUENCE I)))
                                                   )
                                            (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 ((LENGTH (CL:LENGTH (CAR SEQS))))
                                                        (CL:WHEN (< LENGTH MIN-LENGTH)
                                                               (SETQ MIN-LENGTH LENGTH)))))))

(DEFUN %%MAP-FOR-EFFECT (FUNCTION FIRST-SEQUENCE &REST MORE-SEQUENCES) (LET ((SEQUENCES (CONS 
                                                                                       FIRST-SEQUENCE 
                                                                                       MORE-SEQUENCES
                                                                                              )))
                                                                            (MAP-FOR-EFFECT)))

(DEFUN %%MAP-SINGLE-FOR-EFFECT (FUNCTION SEQUENCE) (SEQ-DISPATCH SEQUENCE (MAPC SEQUENCE FUNCTION)
                                                          (DOTIMES (I (VECTOR-LENGTH SEQUENCE))
                                                                 (FUNCALL FUNCTION (AREF SEQUENCE I))
                                                                 )))

(DEFMACRO MAP-TO-LIST NIL (BQUOTE (CL:IF (NULL MORE-SEQUENCES)
                                         (SEQ-DISPATCH FIRST-SEQUENCE (MAPCAR FIRST-SEQUENCE FUNCTION
                                                                             )
                                                (for I from 0 to (VECTOR-LENGTH FIRST-SEQUENCE)
                                                   collect (FUNCALL FUNCTION (AREF I FIRST-SEQUENCE))
                                                     ))
                                         (CL:DO ((SEQS MORE-SEQUENCES (CDR SEQS))
                                                 (MIN-LENGTH (CL:LENGTH FIRST-SEQUENCE)))
                                                ((NULL SEQS)
                                                 (FOR INDEX FROM 0 TO (1- MIN-LENGTH)
                                                    COLLECT (CL:APPLY FUNCTION (ELT-SLICE SEQUENCES 
                                                                                      INDEX))))
                                                (LET ((LENGTH (CL:LENGTH (CAR SEQS))))
                                                     (CL:WHEN (< LENGTH MIN-LENGTH)
                                                            (SETF MIN-LENGTH LENGTH)))))))

(DEFUN %%MAP-TO-LIST (FUNCTION FIRST-SEQUENCE &REST MORE-SEQUENCES) (LET ((SEQUENCES (CONS 
                                                                                       FIRST-SEQUENCE 
                                                                                       MORE-SEQUENCES
                                                                                           )))
                                                                         (MAP-TO-LIST)))

(DEFUN %%MAP-SINGLE-TO-LIST (FUNCTION SEQUENCE) (SEQ-DISPATCH SEQUENCE (MAPCAR SEQUENCE FUNCTION)
                                                       (for I from 0 to (VECTOR-LENGTH SEQUENCE)
                                                          collect (FUNCALL FUNCTION (AREF I SEQUENCE)
                                                                         ))))

(DEFMACRO MAP-TO-SIMPLE NIL (BQUOTE (CL:IF (NULL (CDR SEQUENCES))
                                           (LET* ((LENGTH (CL:LENGTH FIRST-SEQUENCE))
                                                  (RESULT (MAKE-SEQUENCE-OF-TYPE RESULT-TYPE LENGTH))
                                                  )
                                                 (SEQ-DISPATCH
                                                  FIRST-SEQUENCE
                                                  (for X in (THE LIST FIRST-SEQUENCE) as I
                                                     from 0 do (SETF (AREF RESULT I)
                                                                     (FUNCALL FUNCTION X))
                                                     finally (RETURN RESULT))
                                                  (DOTIMES (I LENGTH RESULT)
                                                         (SETF (AREF RESULT I)
                                                               (FUNCALL FUNCTION
                                                                      (AREF (THE VECTOR 
                                                                                 FIRST-SEQUENCE)
                                                                            I))))))
                                           (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 RESULT-TYPE 
                                                                          MIN-LENGTH)))
                                                          ((= INDEX MIN-LENGTH)
                                                           RESULT)
                                                          (SETF (AREF RESULT INDEX)
                                                                (CL:APPLY FUNCTION (ELT-SLICE 
                                                                                          SEQUENCES 
                                                                                          INDEX)))))
                                                  (LET ((LENGTH (CL:LENGTH (CAR SEQS))))
                                                       (CL:WHEN (< LENGTH MIN-LENGTH)
                                                              (SETF MIN-LENGTH LENGTH)))))))

(DEFUN %%MAP-TO-SIMPLE (RESULT-TYPE FUNCTION FIRST-SEQUENCE &REST MORE-SEQUENCES)
   (LET ((SEQUENCES (CONS FIRST-SEQUENCE MORE-SEQUENCES)))
        (MAP-TO-SIMPLE)))

(DEFUN %%MAP-SINGLE-TO-SIMPLE (OUTPUT-TYPE-SPEC FUNCTION SEQUENCE)
   (LET* ((LENGTH (CL:LENGTH SEQUENCE))
          (RESULT (MAKE-SEQUENCE-OF-TYPE OUTPUT-TYPE-SPEC LENGTH)))
         (SEQ-DISPATCH SEQUENCE (for X in (THE LIST SEQUENCE) as I from 0
                                   do (SETF (AREF RESULT I)
                                            (FUNCALL FUNCTION X)) finally (RETURN RESULT))
                (DOTIMES (I LENGTH RESULT)
                       (SETF (AREF RESULT I)
                             (FUNCALL FUNCTION (AREF (THE VECTOR SEQUENCE)
                                                     I)))))))

(DEFUN CL:MAP (RESULT-TYPE FUNCTION FIRST-SEQUENCE &REST MORE-SEQUENCES) "FUNCTION must take as many arguments as there are sequences provided.  The result is a sequence such that element i is the result of applying FUNCTION to element i of each of the argument sequences."
   (LET ((SEQUENCES (CONS FIRST-SEQUENCE MORE-SEQUENCES)))
        (CASE (TYPE-SPECIFIER RESULT-TYPE)
              (NIL (MAP-FOR-EFFECT))
              (LIST (MAP-TO-LIST))
              ((SIMPLE-VECTOR SIMPLE-STRING VECTOR STRING CL:ARRAY SIMPLE-ARRAY BIT-VECTOR 
                      SIMPLE-BIT-VECTOR)
               (MAP-TO-SIMPLE))
              (T (CL:ERROR "~S: invalid output type specifier." RESULT-TYPE)))))

(DEFOPTIMIZER %%MAP-FOR-EFFECT (FUNCTION SEQUENCE &REST MORE-SEQUENCES)
   (COND
      ((NULL MORE-SEQUENCES)
       (BQUOTE (%%MAP-SINGLE-FOR-EFFECT (\, FUNCTION)
                      (\, SEQUENCE))))
      (T (QUOTE COMPILER:PASS))))

(DEFOPTIMIZER %%MAP-TO-LIST (FUNCTION SEQUENCE &REST MORE-SEQUENCES) (COND
                                                                        ((NULL MORE-SEQUENCES)
                                                                         (BQUOTE (
                                                                                 %%MAP-SINGLE-TO-LIST
                                                                                  (\, FUNCTION)
                                                                                  (\, SEQUENCE))))
                                                                        (T (QUOTE COMPILER:PASS))))

(DEFOPTIMIZER %%MAP-TO-SIMPLE (OUTPUT-TYPE-SPEC FUNCTION SEQUENCE &REST MORE-SEQUENCES)
   (COND
      ((NULL MORE-SEQUENCES)
       (BQUOTE (%%MAP-SINGLE-TO-SIMPLE (\, OUTPUT-TYPE-SPEC)
                      (\, FUNCTION)
                      (\, SEQUENCE))))
      (T (QUOTE COMPILER:PASS))))

(DEFOPTIMIZER CL:MAP (RESULT-TYPE FUNCTION &REST SEQUENCES &CONTEXT CTX &AUX RES-TYPE)
   (COND
      ((ZEROP (COMPILER:CONTEXT-VALUES-USED CTX))
       (BQUOTE (%%MAP-FOR-EFFECT (\, FUNCTION)
                      (\,@ SEQUENCES))))
      ((PROG1 (SETQ RES-TYPE (CONSTANTEXPRESSIONP RESULT-TYPE))
              (SETQ RES-TYPE (CAR RES-TYPE)))
       (CASE RES-TYPE (NIL (BQUOTE (%%MAP-FOR-EFFECT (\, FUNCTION)
                                          (\,@ SEQUENCES))))
             (LIST (BQUOTE (%%MAP-TO-LIST (\, FUNCTION)
                                  (\,@ SEQUENCES))))
             (OTHERWISE (BQUOTE (%%MAP-TO-SIMPLE (\, RES-TYPE)
                                       (\, FUNCTION)
                                       (\,@ SEQUENCES))))))
      (T (QUOTE COMPILER:PASS))))

(DEFUN %%SINGLE-SOME (PREDICATE SEQUENCE)
   (SEQ-DISPATCH SEQUENCE (DOLIST (E (THE LIST SEQUENCE)
                                     NIL)
                                 (LET ((X (FUNCALL PREDICATE E)))
                                      (CL:WHEN X (RETURN X))))
          (DOTIMES (I (VECTOR-LENGTH SEQUENCE NIL)
                      (LET ((X (FUNCALL PREDICATE (AREF (THE VECTOR SEQUENCE)
                                                        I))))
                           (CL:WHEN X (RETURN X)))))))

(DEFUN CL:SOME (PREDICATE FIRST-SEQUENCE &REST MORE-SEQUENCES) "PREDICATE is applied to the elements with index 0 of the sequences, then possibly to those with index 1, and so on.  SOME returns the first non-() value encountered, or () if the end of a sequence is reached."
   (CL:IF (NULL MORE-SEQUENCES)
          (%%SINGLE-SOME PREDICATE FIRST-SEQUENCE)
          (CL:DO ((SEQS MORE-SEQUENCES (CDR SEQS))
                  (LENGTH (CL:LENGTH FIRST-SEQUENCE))
                  (SEQUENCES (CONS FIRST-SEQUENCE MORE-SEQUENCES)))
                 ((NULL SEQS)
                  (CL:DO ((INDEX 0 (1+ INDEX)))
                         ((= INDEX LENGTH)
                          NIL)
                         (LET ((RESULT (CL:APPLY PREDICATE (ELT-SLICE SEQUENCES INDEX))))
                              (CL:WHEN RESULT (RETURN RESULT)))))
                 (LET ((THIS (CL:LENGTH (CAR SEQS))))
                      (CL:WHEN (< THIS LENGTH)
                             (SETQ LENGTH THIS))))))

(DEFUN %%SINGLE-EVERY (PREDICATE SEQUENCE) (SEQ-DISPATCH SEQUENCE (DOLIST (E (THE LIST SEQUENCE)
                                                                             T)
                                                                         (CL:UNLESS (FUNCALL 
                                                                                           PREDICATE 
                                                                                           E)
                                                                                (RETURN NIL)))
                                                  (DOTIMES (I (VECTOR-LENGTH SEQUENCE)
                                                              T)
                                                         (DECLARE (VECTOR SEQUENCE))
                                                         (CL:UNLESS (FUNCALL PREDICATE
                                                                           (AREF SEQUENCE I))
                                                                (RETURN NIL)))))

(DEFUN CL:EVERY (PREDICATE FIRST-SEQUENCE &REST MORE-SEQUENCES) "PREDICATE is applied to the elements with index 0 of the sequences, then possibly to those with index 1, and so on.  EVERY returns () as soon as any invocation of PREDICATE returns (), or T if every invocation is non-()."
   (CL:IF (NULL MORE-SEQUENCES)
          (%%SINGLE-EVERY PREDICATE FIRST-SEQUENCE)
          (CL:DO ((SEQS MORE-SEQUENCES (CDR SEQS))
                  (LENGTH (CL:LENGTH FIRST-SEQUENCE))
                  (SEQUENCES (CONS FIRST-SEQUENCE MORE-SEQUENCES)))
                 ((NULL SEQS)
                  (CL:DO ((INDEX 0 (1+ INDEX)))
                         ((= INDEX LENGTH)
                          T)
                         (LET ((RESULT (CL:APPLY PREDICATE (ELT-SLICE SEQUENCES INDEX))))
                              (CL:UNLESS RESULT (RETURN NIL)))))
                 (LET ((THIS (CL:LENGTH (CAR SEQS))))
                      (CL:WHEN (< THIS LENGTH)
                             (SETQ LENGTH THIS))))))

(DEFUN %%SINGLE-NOTANY (PREDICATE SEQUENCE) (SEQ-DISPATCH SEQUENCE (DOLIST (E (THE LIST SEQUENCE)
                                                                              T)
                                                                          (CL:WHEN (FUNCALL PREDICATE 
                                                                                          E)
                                                                                 (RETURN NIL)))
                                                   (DOTIMES (I (VECTOR-LENGTH SEQUENCE)
                                                               T)
                                                          (DECLARE (VECTOR SEQUENCE))
                                                          (CL:WHEN (FUNCALL PREDICATE
                                                                          (AREF SEQUENCE I))
                                                                 (RETURN NIL)))))

(DEFUN CL:NOTANY (PREDICATE FIRST-SEQUENCE &REST MORE-SEQUENCES) "PREDICATE is applied to the elements with index 0 of the sequences, then possibly to those with index 1, and so on.  NOTANY returns () as soon as any invocation of PREDICATE returns a non-() value, or T if the end of a sequence is reached."
   (CL:IF (NULL MORE-SEQUENCES)
          (%%SINGLE-NOTANY PREDICATE FIRST-SEQUENCE)
          (CL:DO ((SEQS MORE-SEQUENCES (CDR SEQS))
                  (LENGTH (CL:LENGTH FIRST-SEQUENCE))
                  (SEQUENCES (CONS FIRST-SEQUENCE MORE-SEQUENCES)))
                 ((NULL SEQS)
                  (CL:DO ((INDEX 0 (1+ INDEX)))
                         ((= INDEX LENGTH)
                          T)
                         (LET ((RESULT (CL:APPLY PREDICATE (ELT-SLICE SEQUENCES INDEX))))
                              (CL:WHEN RESULT (RETURN NIL)))))
                 (LET ((THIS (CL:LENGTH (CAR SEQS))))
                      (CL:WHEN (< THIS LENGTH)
                             (SETQ LENGTH THIS))))))

(DEFUN %%SINGLE-NOTEVERY (PREDICATE SEQUENCE) (SEQ-DISPATCH
                                               SEQUENCE
                                               (DOLIST (E (THE LIST SEQUENCE)
                                                          NIL)
                                                      (LET ((X (FUNCALL PREDICATE E)))
                                                           (CL:WHEN X (RETURN T))))
                                               (DOTIMES (I (VECTOR-LENGTH SEQUENCE)
                                                           NIL)
                                                      (DECLARE (VECTOR SEQUENCE))
                                                      (LET ((X (FUNCALL PREDICATE (AREF SEQUENCE I)))
                                                            )
                                                           (CL:WHEN X (RETURN T))))))

(DEFUN CL:NOTEVERY (PREDICATE FIRST-SEQUENCE &REST MORE-SEQUENCES) "PREDICATE is applied to the elements with index 0 of the sequences, then possibly to those with index 1, and so on.  NOTEVERY returns T as soon as any invocation of PREDICATE returns (), or () if every invocation is non-()."
   (CL:IF (NULL MORE-SEQUENCES)
          (%%SINGLE-NOTEVERY PREDICATE FIRST-SEQUENCE)
          (CL:DO ((SEQS MORE-SEQUENCES (CDR SEQS))
                  (LENGTH (CL:LENGTH FIRST-SEQUENCE))
                  (SEQUENCES (CONS FIRST-SEQUENCE MORE-SEQUENCES)))
                 ((NULL SEQS)
                  (CL:DO ((INDEX 0 (1+ INDEX)))
                         ((= INDEX LENGTH)
                          NIL)
                         (LET ((RESULT (CL:APPLY PREDICATE (ELT-SLICE SEQUENCES INDEX))))
                              (CL:UNLESS RESULT (RETURN T)))))
                 (LET ((THIS (CL:LENGTH (CAR SEQS))))
                      (CL:WHEN (< THIS LENGTH)
                             (SETQ LENGTH THIS))))))

(DEFOPTIMIZER CL:SOME (PREDICATE SEQUENCE &REST MORE-SEQUENCES) (COND
                                                                   ((NULL MORE-SEQUENCES)
                                                                    (BQUOTE (%%SINGLE-SOME
                                                                             (\, PREDICATE)
                                                                             (\, SEQUENCE))))
                                                                   (T (QUOTE COMPILER:PASS))))

(DEFOPTIMIZER CL:EVERY (PREDICATE SEQUENCE &REST MORE-SEQUENCES) (COND
                                                                    ((NULL MORE-SEQUENCES)
                                                                     (BQUOTE (%%SINGLE-EVERY
                                                                              (\, PREDICATE)
                                                                              (\, SEQUENCE))))
                                                                    (T (QUOTE COMPILER:PASS))))

(DEFOPTIMIZER CL:NOTANY (PREDICATE SEQUENCE &REST MORE-SEQUENCES) (COND
                                                                     ((NULL MORE-SEQUENCES)
                                                                      (BQUOTE (%%SINGLE-NOTANY
                                                                               (\, PREDICATE)
                                                                               (\, SEQUENCE))))
                                                                     (T (QUOTE COMPILER:PASS))))

(DEFOPTIMIZER CL:NOTEVERY (PREDICATE SEQUENCE &REST MORE-SEQUENCES) (COND
                                                                       ((NULL MORE-SEQUENCES)
                                                                        (BQUOTE (%%SINGLE-NOTEVERY
                                                                                 (\, PREDICATE)
                                                                                 (\, SEQUENCE))))
                                                                       (T (QUOTE COMPILER:PASS))))

(DEFMACRO LIST-REDUCE-FROM-END (FUNCTION SEQUENCE START END INITIAL-VALUE INITIAL-PROVIDED)
   (BQUOTE (LET ((SEQUENCE (NTHCDR (- (CL:LENGTH (\, SEQUENCE))
                                      (\, END))
                                  (REVERSE (\, SEQUENCE)))))
                (CL:WHEN (\, INITIAL-PROVIDED)
                       (CL:PUSH (\, INITIAL-VALUE)
                              SEQUENCE))
                (CL:DO* ((COUNT (- (\, END)
                                   (\, START)
                                   (CL:IF (\, INITIAL-PROVIDED)
                                          0 1))
                                (1- COUNT))
                         (SEQUENCE SEQUENCE (CDR SEQUENCE))
                         (VALUE (CAR SEQUENCE)
                                (FUNCALL (\, FUNCTION)
                                       (CAR SEQUENCE)
                                       VALUE)))
                       ((= COUNT 0)
                        VALUE)))))

(DEFMACRO LIST-REDUCE (FUNCTION SEQUENCE START END INITIAL-VALUE INITIAL-PROVIDED)
   (BQUOTE (LET ((SEQUENCE (NTHCDR (\, START)
                                  (\, SEQUENCE))))
                (CL:WHEN (\, INITIAL-PROVIDED)
                       (CL:PUSH (\, INITIAL-VALUE)
                              SEQUENCE))
                (CL:DO* ((COUNT (- END START (CL:IF (\, INITIAL-PROVIDED)
                                                    0 1))
                                (1- COUNT))
                         (SEQUENCE SEQUENCE (CDR SEQUENCE))
                         (VALUE (CAR SEQUENCE)
                                (FUNCALL (\, FUNCTION)
                                       VALUE
                                       (CAR SEQUENCE))))
                       ((= COUNT 0)
                        VALUE)))))

(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 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))))))

(DEFUN REDUCE (FUNCTION SEQUENCE &KEY FROM-END (START 0)
                     END
                     (INITIAL-VALUE NIL INITIAL-PROVIDED)
                     &AUX
                     (LENGTH (CL:LENGTH SEQUENCE))) (CL:UNLESS END (SETQ END LENGTH))
                                                    (CHECK-SUBSEQ SEQUENCE START END LENGTH)
                                                    (COND
                                                       ((= END START)
                                                        (CL:IF INITIAL-PROVIDED INITIAL-VALUE
                                                               (FUNCALL FUNCTION)))
                                                       ((CL:LISTP SEQUENCE)
                                                        (CL:IF FROM-END
                                                               (LIST-REDUCE-FROM-END FUNCTION 
                                                                      SEQUENCE START END 
                                                                      INITIAL-VALUE INITIAL-PROVIDED)
                                                               (LIST-REDUCE FUNCTION SEQUENCE START 
                                                                      END INITIAL-VALUE 
                                                                      INITIAL-PROVIDED)))
                                                       (T (COND
                                                             (FROM-END (CL:UNLESS INITIAL-PROVIDED
                                                                              (CL:SETQ END
                                                                                     (1- END)
                                                                                     INITIAL-VALUE
                                                                                     (AREF SEQUENCE 
                                                                                           END)))
                                                                    (MUMBLE-REDUCE-FROM-END FUNCTION 
                                                                           SEQUENCE START END 
                                                                           INITIAL-VALUE AREF))
                                                             (T (CL:UNLESS INITIAL-PROVIDED
                                                                       (CL:SETQ INITIAL-VALUE
                                                                              (AREF SEQUENCE START)
                                                                              START
                                                                              (1+ START)))
                                                                (MUMBLE-REDUCE FUNCTION SEQUENCE 
                                                                       START END INITIAL-VALUE AREF))
                                                             ))))


(PUTPROPS CMLSEQMAPPERS FILETYPE COMPILE-FILE)
(PUTPROPS CMLSEQMAPPERS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL)))
STOP