(FILECREATED "16-Jul-86 01:24:44" {ERIS}<LISPCORE>EVAL>CMLSEQCOMMON.;1 1578   

      changes to:  (FUNCTIONS MAKE-SEQUENCE-LIKE)

      previous date: " 2-Jul-86 18:01:08" {ERIS}<LISPCORE>LIBRARY>CMLSEQCOMMON.;2)


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

(PRETTYCOMPRINT CMLSEQCOMMONCOMS)

(RPAQQ CMLSEQCOMMONCOMS ((FUNCTIONS MAKE-SEQUENCE-LIKE SEQ-DISPATCH TYPE-SPECIFIER)
                         (PROP FILETYPE CMLSEQCOMMON)))
(DEFMACRO MAKE-SEQUENCE-LIKE (SEQUENCE LENGTH) 
                              "Returns a sequence of the same type as SEQUENCE and the given LENGTH."
   (BQUOTE (LET ((SEQ (\, SEQUENCE)))
                (ETYPECASE SEQ (LIST (MAKE-LIST (\, LENGTH)))
                       (STRING (MAKE-STRING (\, LENGTH)))
                       (ARRAY (MAKE-ARRAY (\, LENGTH)
                                     :ELEMENT-TYPE
                                     (ARRAY-ELEMENT-TYPE SEQ)))))))

(DEFMACRO SEQ-DISPATCH (SEQUENCE LIST-FORM VECTOR-FORM) (BQUOTE (ETYPECASE (\, SEQUENCE)
                                                                       (LIST (\, LIST-FORM))
                                                                       (VECTOR (\, VECTOR-FORM)))))

(DEFMACRO TYPE-SPECIFIER (TYPE) "Returns the broad class of which TYPE is a specific subclass."
   (BQUOTE (CL:IF (CL:ATOM (\, TYPE))
                  (\, TYPE)
                  (CAR (\, TYPE)))))


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