(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