(FILECREATED "25-May-86 00:21:28" {ERIS}<LISPCORE>EVAL>CMLDESTRUCT.;1 2502   

      changes to:  (VARS CMLDESTRUCTCOMS)
                   (PROPS (CMLDESTRUCT FILETYPE))

      previous date: "17-May-86 01:14:25" {ERIS}<LISPCORE>LIBRARY>CMLDESTRUCT.;10)


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

(PRETTYCOMPRINT CMLDESTRUCTCOMS)

(RPAQQ CMLDESTRUCTCOMS ((MACROS DESTRUCTURING-BIND DESTRUCTURING-SETQ)
                        (FNS EXPAND-DESTRUCTURING-BIND)
                        (PROP FILETYPE CMLDESTRUCT)))
(DECLARE: EVAL@COMPILE 
(DEFMACRO DESTRUCTURING-BIND (PATTERN FORM &BODY BODY &ENVIRONMENT ENV) (EXPAND-DESTRUCTURING-BIND
                                                                         PATTERN FORM BODY ENV))

(DEFMACRO DESTRUCTURING-SETQ (VARS VALUE)
   (if (NULL VARS)
       then VALUE elseif (NLISTP VARS)
       then
       (BQUOTE (SETQ (\, VARS)
                (\, VALUE)))
       elseif
       (NULL (CDR VARS))
       then
       (BQUOTE (DESTRUCTURING-SETQ (\, (CAR VARS))
                      (CAR (\, VALUE))))
       elseif
       (LISTP VALUE)
       then
       (LET ((DV (GENSYM)))
            (BQUOTE (LET (((\, DV)
                           (\, VALUE)))
                         (DESTRUCTURING-SETQ (\, (CAR VARS))
                                (CAR (\, DV)))
                         (DESTRUCTURING-SETQ (\, (CDR VARS))
                                (CDR (\, DV))))))
       else
       (BQUOTE (PROGN (DESTRUCTURING-SETQ (\, (CAR VARS))
                             (CAR (\, VALUE)))
                      (DESTRUCTURING-SETQ (\, (CDR VARS))
                             (CDR (\, VALUE)))))))

)
(DEFINEQ

(EXPAND-DESTRUCTURING-BIND
  [LAMBDA (PATTERN FORM BODY ENVIRONMENT)                    (* "Pavel" "16-May-86 19:05")
          
          (* * 
          "A compiled function so that circularity of MULTIPLE-VALUE-BIND isn't caught")

    (LET ((WHOLE-VAR (GENSYM)))
         (MULTIPLE-VALUE-BIND (CODE DECLARATIONS)
                (PARSE-DEFMACRO PATTERN WHOLE-VAR BODY (QUOTE DESTRUCTURING-BIND)
                       ENVIRONMENT :PATH WHOLE-VAR :DOC-STRING-ALLOWED NIL)
                (BQUOTE (LET (((\, WHOLE-VAR)
                               (\, FORM)))
                             (\,@ DECLARATIONS)
                             (\, CODE])
)

(PUTPROPS CMLDESTRUCT FILETYPE COMPILE-FILE)
(PUTPROPS CMLDESTRUCT COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1691 2370 (EXPAND-DESTRUCTURING-BIND 1701 . 2368)))))
STOP