(FILECREATED "15-May-86 23:27:06" {ERIS}<LISPCORE>LIBRARY>CMLDESTRUCT.;8 2381 changes to: (VARS CMLDESTRUCTCOMS) (FNS EXPAND-DESTRUCTURING-BIND) previous date: "22-Apr-86 12:56:30" {ERIS}<LISPCORE>LIBRARY>CMLDESTRUCT.;4) (* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT CMLDESTRUCTCOMS) (RPAQQ CMLDESTRUCTCOMS ((MACROS DESTRUCTURING-BIND DESTRUCTURING-SETQ) (FNS EXPAND-DESTRUCTURING-BIND))) (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" "15-May-86 23:26") (* * "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) :PATH WHOLE-VAR :CURRENT-ENV ENVIRONMENT :DOC-STRING-ALLOWED NIL) (BQUOTE (LET (((\, WHOLE-VAR) (\, FORM))) (\,@ DECLARATIONS) (\, CODE]) ) (PUTPROPS CMLDESTRUCT COPYRIGHT ("Xerox Corporation" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (1603 2299 (EXPAND-DESTRUCTURING-BIND 1613 . 2297))))) STOP