(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