diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet index c9f17b6..7090eff 100644 --- a/books/bookvol9.pamphlet +++ b/books/bookvol9.pamphlet @@ -7295,7 +7295,7 @@ $\rightarrow$ \calls{addDomain}{unknownTypeError} \begin{chunk}{defun addDomain} (defun |addDomain| (domain env) - (let (s name tmp1 tmp2 target) + (let (s name tmp1) (cond ((atom domain) (cond @@ -7327,6 +7327,103 @@ $\rightarrow$ \end{chunk} +\defun{getDomainsInScope}{getDomainsInScope} +The way XLAMs work: +\begin{verbatim} + ((XLAM ($1 $2 $3) (SETELT $1 0 $3)) X "c" V) ==> (SETELT X 0 V) +\end{verbatim} +\calls{getDomainsInScope}{get} +\refsdollar{getDomainsInScope}{CapsuleDomainsInScope} +\refsdollar{getDomainsInScope}{insideCapsuleFunctionIfTrue} +\begin{chunk}{defun getDomainsInScope} +(defun |getDomainsInScope| (env) + (declare (special |$CapsuleDomainsInScope| |$insideCapsuleFunctionIfTrue|)) + (if |$insideCapsuleFunctionIfTrue| + |$CapsuleDomainsInScope| + (|get| '|$DomainsInScope| 'special env))) + +\end{chunk} + +\defun{putDomainsInScope}{putDomainsInScope} +\calls{putDomainsInScope}{getDomainsInScope} +\calls{putDomainsInScope}{put} +\calls{putDomainsInScope}{delete} +\calls{putDomainsInScope}{say} +\calls{putDomainsInScope}{member} +\defsdollar{putDomainsInScope}{CapsuleDomainsInScope} +\refsdollar{putDomainsInScope}{insideCapsuleFunctionIfTrue} +\begin{chunk}{defun putDomainsInScope} +(defun |putDomainsInScope| (x env) + (let (z newValue) + (declare (special |$CapsuleDomainsInScope| |$insideCapsuleFunctionIfTrue|)) + (setq z (|getDomainsInScope| env)) + (when (|member| x z) (say "****** Domain: " x " already in scope")) + (setq newValue (cons x (|delete| x z))) + (if |$insideCapsuleFunctionIfTrue| + (progn + (setq |$CapsuleDomainsInScope| newValue) + env) + (|put| '|$DomainsInScope| 'special newValue env)))) + +\end{chunk} + +\defun{isSuperDomain}{isSuperDomain} +\calls{isSuperDomain}{isSubset} +\calls{isSuperDomain}{lassoc} +\calls{isSuperDomain}{opOf} +\calls{isSuperDomain}{get} +\begin{chunk}{defun isSuperDomain} +(defun |isSuperDomain| (domainForm domainFormp env) + (cond + ((|isSubset| domainFormp domainForm env) t) + ((and (eq domainForm '|Rep|) (eq domainFormp '$)) t) + (t (lassoc (|opOf| domainFormp) (|get| domainForm '|SubDomain| env))))) + +\end{chunk} + +\defun{addNewDomain}{addNewDomain} +\calls{addNewDomain}{augModemapsFromDomain} +\begin{chunk}{defun addNewDomain} +(defun |addNewDomain| (domain env) + (|augModemapsFromDomain| domain domain env)) + +\end{chunk} + +\defun{augModemapsFromDomain}{augModemapsFromDomain} +\calls{augModemapsFromDomain}{member} +\calls{augModemapsFromDomain}{kar} +\calls{augModemapsFromDomain}{getDomainsInScope} +\calls{augModemapsFromDomain}{getdatabase} +\calls{augModemapsFromDomain}{opOf} +\calls{augModemapsFromDomain}{addNewDomain} +\calls{augModemapsFromDomain}{listOrVectorElementNode} +\calls{augModemapsFromDomain}{stripUnionTags} +\calls{augModemapsFromDomain}{augModemapsFromDomain1} +\refsdollar{augModemapsFromDomain}{Category} +\refsdollar{augModemapsFromDomain}{DummyFunctorNames} +\begin{chunk}{defun augModemapsFromDomain} +(defun |augModemapsFromDomain| (name functorForm env) + (let (curDomainsInScope u innerDom dl) + (declare (special |$Category| |$DummyFunctorNames|)) + (cond + ((|member| (or (kar name) name) |$DummyFunctorNames|) + env) + ((or (equal name |$Category|) (|isCategoryForm| name env)) + env) + ((|member| name (setq curDomainsInScope (|getDomainsInScope| env))) + env) + (t + (when (setq u (getdatabase (|opOf| functorForm) 'superdomain)) + (setq env (|addNewDomain| (car u) env))) + (when (setq innerDom (|listOrVectorElementMode| name)) + (setq env (|addDomain| innerDom env))) + (when (and (pairp name) (eq (qcar name) '|Union|)) + (dolist (d (|stripUnionTags| (qcdr name))) + (setq env (|addDomain| d env)))) + (|augModemapsFromDomain1| name functorForm env))))) + +\end{chunk} + \defun{getModemap}{getModemap} \calls{getModemap}{get} \calls{getModemap}{compApplyModemap} @@ -16898,6 +16995,7 @@ if \verb|$InteractiveMode| then use a null outputstream \getchunk{defun addModemapKnown} \getchunk{defun addModemap0} \getchunk{defun addModemap1} +\getchunk{defun addNewDomain} \getchunk{defun add-parens-and-semis-to-line} \getchunk{defun Advance-Char} \getchunk{defun advance-token} @@ -16907,6 +17005,7 @@ if \verb|$InteractiveMode| then use a null outputstream \getchunk{defun argsToSig} \getchunk{defun augModemapsFromCategory} \getchunk{defun augModemapsFromCategoryRep} +\getchunk{defun augModemapsFromDomain} \getchunk{defun blankp} \getchunk{defun bumperrorcount} @@ -17026,6 +17125,7 @@ if \verb|$InteractiveMode| then use a null outputstream \getchunk{defun freelist} \getchunk{defun get-a-line} +\getchunk{defun getDomainsInScope} \getchunk{defun getModemap} \getchunk{defun getModemapList} \getchunk{defun getModemapListFromDomain} @@ -17055,6 +17155,7 @@ if \verb|$InteractiveMode| then use a null outputstream \getchunk{defun initial-substring-p} \getchunk{defun is-console} \getchunk{defun isListConstructor} +\getchunk{defun isSuperDomain} \getchunk{defun isTokenDelimiter} \getchunk{defun killColons} @@ -17289,6 +17390,7 @@ if \verb|$InteractiveMode| then use a null outputstream \getchunk{defun primitiveType} \getchunk{defun print-defun} \getchunk{defun push-reduction} +\getchunk{defun putDomainsInScope} \getchunk{defun quote-if-string} diff --git a/changelog b/changelog index 9f4bc58..3e71e24 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,8 @@ +20110712 tpd src/axiom-website/patches.html 20110712.01.tpd.patch +20110712 tpd src/interp/lisplib.lisp move function from modemap.lisp +20110712 tpd src/interp/modemap.lisp removed file +20110712 tpd src/interp/Makefile remove modemap.lisp +20110712 tpd books/bookvol9 treeshake compiler, remove modemap.lisp 20110710 tpd src/axiom-website/patches.html 20110710.01.tpd.patch 20110710 tpd src/interp/modemap.lisp treeshake compiler 20110710 tpd books/bookvol9 treeshake compiler diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index f6093d7..b737b78 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3536,5 +3536,7 @@ books/bookvol9 treeshake compiler
books/bookvol9 treeshake compiler
20110710.01.tpd.patch books/bookvol9 treeshake compiler
+20110712.01.tpd.patch +books/bookvol9 treeshake compiler, remove modemap.lisp
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet index 3005b10..faec9d1 100644 --- a/src/interp/Makefile.pamphlet +++ b/src/interp/Makefile.pamphlet @@ -183,7 +183,7 @@ OBJS= ${OUT}/vmlisp.${O} \ ${OUT}/category.${O} ${OUT}/compiler.${O} \ ${OUT}/define.${O} ${OUT}/functor.${O} \ ${OUT}/info.${O} ${OUT}/iterator.${O} \ - ${OUT}/modemap.${O} ${OUT}/nruncomp.${O} \ + ${OUT}/nruncomp.${O} \ ${OUT}/package.${O} ${OUT}/htcheck.${O} @@ -2482,30 +2482,6 @@ ${MID}/match.lisp: ${IN}/match.lisp.pamphlet @ -\subsection{modemap.lisp} -<>= -${OUT}/modemap.${O}: ${MID}/modemap.lisp - @ echo 136 making ${OUT}/modemap.${O} from ${MID}/modemap.lisp - @ ( cd ${MID} ; \ - if [ -z "${NOISE}" ] ; then \ - echo '(progn (compile-file "${MID}/modemap.lisp"' \ - ':output-file "${OUT}/modemap.${O}") (${BYE}))' | ${DEPSYS} ; \ - else \ - echo '(progn (compile-file "${MID}/modemap.lisp"' \ - ':output-file "${OUT}/modemap.${O}") (${BYE}))' | ${DEPSYS} \ - >${TMP}/trace ; \ - fi ) - -@ -<>= -${MID}/modemap.lisp: ${IN}/modemap.lisp.pamphlet - @ echo 137 making ${MID}/modemap.lisp from ${IN}/modemap.lisp.pamphlet - @ (cd ${MID} ; \ - echo '(tangle "${IN}/modemap.lisp.pamphlet" "*" "modemap.lisp")' \ - | ${OBJ}/${SYS}/bin/lisp ) - -@ - \subsection{msgdb.lisp} <>= ${OUT}/msgdb.${O}: ${MID}/msgdb.lisp @@ -3517,9 +3493,6 @@ clean: <> <> -<> -<> - <> <> diff --git a/src/interp/lisplib.lisp.pamphlet b/src/interp/lisplib.lisp.pamphlet index 7930461..4b9de1a 100644 --- a/src/interp/lisplib.lisp.pamphlet +++ b/src/interp/lisplib.lisp.pamphlet @@ -2172,6 +2172,111 @@ (CONS |functorForm| (CONS '| is an unknown mode| NIL))) |e|))))) + +;addConstructorModemaps(name,form is [functorName,:.],e) == +; $InteractiveMode: local:= nil +; e:= putDomainsInScope(name,e) --frame +; fn := GET(functorName,"makeFunctionList") +; [funList,e]:= FUNCALL(fn,name,form,e) +; for [op,sig,opcode] in funList repeat +; if opcode is [sel,dc,n] and sel='ELT then +; nsig := substitute("$$$",name,sig) +; nsig := substitute('$,"$$$",substitute("$$",'$,nsig)) +; opcode := [sel,dc,nsig] +; e:= addModemap(op,name,sig,true,opcode,e) +; e + +(DEFUN |addConstructorModemaps| (|name| |form| |e|) + (PROG (|$InteractiveMode| |functorName| |fn| |LETTMP#1| |funList| + |op| |sig| |sel| |ISTMP#1| |dc| |ISTMP#2| |n| |nsig| + |opcode|) + (DECLARE (SPECIAL |$InteractiveMode|)) + (RETURN + (SEQ (PROGN + (SPADLET |functorName| (CAR |form|)) + (SPADLET |$InteractiveMode| NIL) + (SPADLET |e| (|putDomainsInScope| |name| |e|)) + (SPADLET |fn| (GETL |functorName| '|makeFunctionList|)) + (SPADLET |LETTMP#1| (FUNCALL |fn| |name| |form| |e|)) + (SPADLET |funList| (CAR |LETTMP#1|)) + (SPADLET |e| (CADR |LETTMP#1|)) + (DO ((G166774 |funList| (CDR G166774)) + (G166732 NIL)) + ((OR (ATOM G166774) + (PROGN (SETQ G166732 (CAR G166774)) NIL) + (PROGN + (PROGN + (SPADLET |op| (CAR G166732)) + (SPADLET |sig| (CADR G166732)) + (SPADLET |opcode| (CADDR G166732)) + G166732) + NIL)) + NIL) + (SEQ (EXIT (PROGN + (COND + ((AND (PAIRP |opcode|) + (PROGN + (SPADLET |sel| (QCAR |opcode|)) + (SPADLET |ISTMP#1| + (QCDR |opcode|)) + (AND (PAIRP |ISTMP#1|) + (PROGN + (SPADLET |dc| + (QCAR |ISTMP#1|)) + (SPADLET |ISTMP#2| + (QCDR |ISTMP#1|)) + (AND (PAIRP |ISTMP#2|) + (EQ (QCDR |ISTMP#2|) NIL) + (PROGN + (SPADLET |n| + (QCAR |ISTMP#2|)) + 'T))))) + (BOOT-EQUAL |sel| 'ELT)) + (SPADLET |nsig| + (MSUBST '$$$ |name| |sig|)) + (SPADLET |nsig| + (MSUBST '$ '$$$ + (MSUBST '$$ '$ |nsig|))) + (SPADLET |opcode| + (CONS |sel| + (CONS |dc| (CONS |nsig| NIL)))))) + (SPADLET |e| + (|addModemap| |op| |name| |sig| 'T + |opcode| |e|)))))) + |e|))))) + + +;substituteCategoryArguments(argl,catform) == +; argl:= substitute("$$","$",argl) +; arglAssoc:= [[INTERNL("#",STRINGIMAGE i),:a] for i in 1.. for a in argl] +; SUBLIS(arglAssoc,catform) + +(DEFUN |substituteCategoryArguments| (|argl| |catform|) + (PROG (|arglAssoc|) + (RETURN + (SEQ (PROGN + (SPADLET |argl| (MSUBST '$$ '$ |argl|)) + (SPADLET |arglAssoc| + (PROG (G166422) + (SPADLET G166422 NIL) + (RETURN + (DO ((|i| 1 (QSADD1 |i|)) + (G166428 |argl| (CDR G166428)) + (|a| NIL)) + ((OR (ATOM G166428) + (PROGN + (SETQ |a| (CAR G166428)) + NIL)) + (NREVERSE0 G166422)) + (SEQ (EXIT (SETQ G166422 + (CONS + (CONS + (INTERNL '|#| + (STRINGIMAGE |i|)) + |a|) + G166422)))))))) + (SUBLIS |arglAssoc| |catform|)))))) + ;getSlotFromCategoryForm ([op,:argl],index) == ; u:= eval [op,:MAPCAR('MKQ,TAKE(#argl,$FormalMapVariableList))] ; null VECP u => diff --git a/src/interp/modemap.lisp.pamphlet b/src/interp/modemap.lisp.pamphlet deleted file mode 100644 index d300b24..0000000 --- a/src/interp/modemap.lisp.pamphlet +++ /dev/null @@ -1,250 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp modemap.lisp} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\begin{chunk}{*} - -(IN-PACKAGE "BOOT" ) - -;-- next definition RPLACs, and hence causes problems. -;-- In ptic., SubResGcd in SparseUnivariatePolynomial is miscompiled -;--mergeModemap(entry:=((mc,:sig),:.),modemapList,e) == -;-- for (mmtail:= (((mc',:sig'),:.),:.)) in tails modemapList do -;-- mc=mc' or isSuperDomain(mc',mc,e) => -;-- RPLACD(mmtail,(first mmtail,: rest mmtail)) -;-- RPLACA(mmtail,entry) -;-- entry := nil -;-- return modemapList -;-- if entry then (:modemapList,entry) else modemapList -; -;isSuperDomain(domainForm,domainForm',e) == -; isSubset(domainForm',domainForm,e) => true -; domainForm='Rep and domainForm'="$" => true --regard $ as a subdomain of Rep -; LASSOC(opOf domainForm',get(domainForm,"SubDomain",e)) - -(DEFUN |isSuperDomain| (|domainForm| |domainForm'| |e|) - (COND - ((|isSubset| |domainForm'| |domainForm| |e|) 'T) - ((AND (BOOT-EQUAL |domainForm| '|Rep|) - (BOOT-EQUAL |domainForm'| '$)) - 'T) - ('T - (LASSOC (|opOf| |domainForm'|) - (|get| |domainForm| '|SubDomain| |e|))))) - -;--substituteForRep(entry is [[mc,:sig],:.],curModemapList) == -;-- --change 'Rep to "$" unless the resulting signature is already in $ -;-- MEMBER(entry':= substitute("$",'Rep,entry),curModemapList) => -;-- [entry,:curModemapList] -;-- [entry,entry',:curModemapList] -; -;addNewDomain(domain,e) == -; augModemapsFromDomain(domain,domain,e) - -(DEFUN |addNewDomain| (|domain| |e|) - (|augModemapsFromDomain| |domain| |domain| |e|)) - -;augModemapsFromDomain(name,functorForm,e) == -; MEMBER(KAR name or name,$DummyFunctorNames) => e -; name=$Category or isCategoryForm(name,e) => e -; MEMBER(name,curDomainsInScope:= getDomainsInScope e) => e -; if u:= GETDATABASE(opOf functorForm,'SUPERDOMAIN) then -; e:= addNewDomain(first u,e) -; --need code to handle parameterized SuperDomains -; if innerDom:= listOrVectorElementMode name then e:= addDomain(innerDom,e) -; if name is ["Union",:dl] then for d in stripUnionTags dl -; repeat e:= addDomain(d,e) -; augModemapsFromDomain1(name,functorForm,e) - -(DEFUN |augModemapsFromDomain| (|name| |functorForm| |e|) - (PROG (|curDomainsInScope| |u| |innerDom| |dl|) - (declare (special |$Category| |$DummyFunctorNames|)) - (RETURN - (SEQ (COND - ((|member| (OR (KAR |name|) |name|) |$DummyFunctorNames|) - |e|) - ((OR (BOOT-EQUAL |name| |$Category|) - (|isCategoryForm| |name| |e|)) - |e|) - ((|member| |name| - (SPADLET |curDomainsInScope| - (|getDomainsInScope| |e|))) - |e|) - ('T - (COND - ((SPADLET |u| - (GETDATABASE (|opOf| |functorForm|) - 'SUPERDOMAIN)) - (SPADLET |e| (|addNewDomain| (CAR |u|) |e|)))) - (COND - ((SPADLET |innerDom| - (|listOrVectorElementMode| |name|)) - (SPADLET |e| (|addDomain| |innerDom| |e|)))) - (COND - ((AND (PAIRP |name|) (EQ (QCAR |name|) '|Union|) - (PROGN (SPADLET |dl| (QCDR |name|)) 'T)) - (DO ((G166400 (|stripUnionTags| |dl|) - (CDR G166400)) - (|d| NIL)) - ((OR (ATOM G166400) - (PROGN (SETQ |d| (CAR G166400)) NIL)) - NIL) - (SEQ (EXIT (SPADLET |e| (|addDomain| |d| |e|))))))) - (|augModemapsFromDomain1| |name| |functorForm| |e|))))))) - -; --see LISPLIB BOOT -; -;substituteCategoryArguments(argl,catform) == -; argl:= substitute("$$","$",argl) -; arglAssoc:= [[INTERNL("#",STRINGIMAGE i),:a] for i in 1.. for a in argl] -; SUBLIS(arglAssoc,catform) - -(DEFUN |substituteCategoryArguments| (|argl| |catform|) - (PROG (|arglAssoc|) - (RETURN - (SEQ (PROGN - (SPADLET |argl| (MSUBST '$$ '$ |argl|)) - (SPADLET |arglAssoc| - (PROG (G166422) - (SPADLET G166422 NIL) - (RETURN - (DO ((|i| 1 (QSADD1 |i|)) - (G166428 |argl| (CDR G166428)) - (|a| NIL)) - ((OR (ATOM G166428) - (PROGN - (SETQ |a| (CAR G166428)) - NIL)) - (NREVERSE0 G166422)) - (SEQ (EXIT (SETQ G166422 - (CONS - (CONS - (INTERNL '|#| - (STRINGIMAGE |i|)) - |a|) - G166422)))))))) - (SUBLIS |arglAssoc| |catform|)))))) - -;addConstructorModemaps(name,form is [functorName,:.],e) == -; $InteractiveMode: local:= nil -; e:= putDomainsInScope(name,e) --frame -; fn := GET(functorName,"makeFunctionList") -; [funList,e]:= FUNCALL(fn,name,form,e) -; for [op,sig,opcode] in funList repeat -; if opcode is [sel,dc,n] and sel='ELT then -; nsig := substitute("$$$",name,sig) -; nsig := substitute('$,"$$$",substitute("$$",'$,nsig)) -; opcode := [sel,dc,nsig] -; e:= addModemap(op,name,sig,true,opcode,e) -; e - -(DEFUN |addConstructorModemaps| (|name| |form| |e|) - (PROG (|$InteractiveMode| |functorName| |fn| |LETTMP#1| |funList| - |op| |sig| |sel| |ISTMP#1| |dc| |ISTMP#2| |n| |nsig| - |opcode|) - (DECLARE (SPECIAL |$InteractiveMode|)) - (RETURN - (SEQ (PROGN - (SPADLET |functorName| (CAR |form|)) - (SPADLET |$InteractiveMode| NIL) - (SPADLET |e| (|putDomainsInScope| |name| |e|)) - (SPADLET |fn| (GETL |functorName| '|makeFunctionList|)) - (SPADLET |LETTMP#1| (FUNCALL |fn| |name| |form| |e|)) - (SPADLET |funList| (CAR |LETTMP#1|)) - (SPADLET |e| (CADR |LETTMP#1|)) - (DO ((G166774 |funList| (CDR G166774)) - (G166732 NIL)) - ((OR (ATOM G166774) - (PROGN (SETQ G166732 (CAR G166774)) NIL) - (PROGN - (PROGN - (SPADLET |op| (CAR G166732)) - (SPADLET |sig| (CADR G166732)) - (SPADLET |opcode| (CADDR G166732)) - G166732) - NIL)) - NIL) - (SEQ (EXIT (PROGN - (COND - ((AND (PAIRP |opcode|) - (PROGN - (SPADLET |sel| (QCAR |opcode|)) - (SPADLET |ISTMP#1| - (QCDR |opcode|)) - (AND (PAIRP |ISTMP#1|) - (PROGN - (SPADLET |dc| - (QCAR |ISTMP#1|)) - (SPADLET |ISTMP#2| - (QCDR |ISTMP#1|)) - (AND (PAIRP |ISTMP#2|) - (EQ (QCDR |ISTMP#2|) NIL) - (PROGN - (SPADLET |n| - (QCAR |ISTMP#2|)) - 'T))))) - (BOOT-EQUAL |sel| 'ELT)) - (SPADLET |nsig| - (MSUBST '$$$ |name| |sig|)) - (SPADLET |nsig| - (MSUBST '$ '$$$ - (MSUBST '$$ '$ |nsig|))) - (SPADLET |opcode| - (CONS |sel| - (CONS |dc| (CONS |nsig| NIL)))))) - (SPADLET |e| - (|addModemap| |op| |name| |sig| 'T - |opcode| |e|)))))) - |e|))))) - -;--The way XLAMs work: -;-- ((XLAM ($1 $2 $3) (SETELT $1 0 $3)) X "c" V) ==> (SETELT X 0 V) -; -;getDomainsInScope e == -; $insideCapsuleFunctionIfTrue=true => $CapsuleDomainsInScope -; get("$DomainsInScope","special",e) - -(DEFUN |getDomainsInScope| (|e|) - (declare (special |$CapsuleDomainsInScope| |$insideCapsuleFunctionIfTrue|)) - (COND - ((BOOT-EQUAL |$insideCapsuleFunctionIfTrue| 'T) - |$CapsuleDomainsInScope|) - ('T (|get| '|$DomainsInScope| 'special |e|)))) - -;putDomainsInScope(x,e) == -; l:= getDomainsInScope e -; if MEMBER(x,l) then SAY("****** Domain: ",x," already in scope") -; newValue:= [x,:DELETE(x,l)] -; $insideCapsuleFunctionIfTrue => ($CapsuleDomainsInScope:= newValue; e) -; put("$DomainsInScope","special",newValue,e) -; - -(DEFUN |putDomainsInScope| (|x| |e|) - (PROG (|l| |newValue|) - (declare (special |$CapsuleDomainsInScope| |$insideCapsuleFunctionIfTrue|)) - (RETURN - (PROGN - (SPADLET |l| (|getDomainsInScope| |e|)) - (COND - ((|member| |x| |l|) - (SAY "****** Domain: " |x| - " already in scope"))) - (SPADLET |newValue| (CONS |x| (|delete| |x| |l|))) - (COND - (|$insideCapsuleFunctionIfTrue| - (SPADLET |$CapsuleDomainsInScope| |newValue|) |e|) - ('T (|put| '|$DomainsInScope| 'special |newValue| |e|))))))) - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document}