diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet index e3fd333..73b581a 100644 --- a/books/bookvol9.pamphlet +++ b/books/bookvol9.pamphlet @@ -7327,6 +7327,37 @@ $\rightarrow$ \end{chunk} +\defun{getModemap}{getModemap} +\calls{getModemap}{get} +\calls{getModemap}{compApplyModemap} +\calls{getModemap}{sublis} +\begin{chunk}{defun getModemap} +(defun |getModemap| (x env) + (let (u) + (dolist (modemap (|get| (first x) '|modemap| env)) + (when (setq u (|compApplyModemap| x modemap env nil)) + (return (sublis (third u) modemap)))))) + +\end{chunk} + +\defun{getUniqueSignature}{getUniqueSignature} +\calls{getUniqueSignature}{getUniqueModemap} +\begin{chunk}{defun getUniqueSignature} +(defun |getUniqueSignature| (form env) + (cdar (|getUniqueModemap| (first form) (|#| (rest form)) env))) + +\end{chunk} + +\defun{domainMember}{domainMember} +\calls{domainMember}{modeEqual} +\begin{chunk}{defun domainMember} +(defun |domainMember| (dom domList) + (let (result) + (dolist (d domList result) + (setq result (or result (|modeEqual| dom d)))))) + +\end{chunk} + \defun{augModemapsFromCategory}{augModemapsFromCategory} \calls{augModemapsFromCategory}{evalAndSub} \calls{augModemapsFromCategory}{compilerMessage} @@ -16728,6 +16759,7 @@ if \verb|$InteractiveMode| then use a null outputstream \getchunk{defun displayMissingFunctions} \getchunk{defun displayPreCompilationErrors} \getchunk{defun dollarTran} +\getchunk{defun domainMember} \getchunk{defun drop} \getchunk{defun errhuh} @@ -16741,11 +16773,13 @@ if \verb|$InteractiveMode| then use a null outputstream \getchunk{defun freelist} \getchunk{defun get-a-line} +\getchunk{defun getModemap} \getchunk{defun getOperationAlist} \getchunk{defun getScriptName} \getchunk{defun getTargetFromRhs} \getchunk{defun get-token} \getchunk{defun getToken} +\getchunk{defun getUniqueSignature} \getchunk{defun genDomainOps} \getchunk{defun genDomainViewList0} \getchunk{defun genDomainViewList} diff --git a/changelog b/changelog index 1691b5b..38cb550 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +20110708 tpd src/axiom-website/patches.html 20110708.02.tpd.patch +20110708 tpd src/interp/modemap.lisp treeshake compiler +20110708 tpd books/bookvol9 treeshake compiler 20110708 tpd src/axiom-website/patches.html 20110708.01.tpd.patch 20110708 tpd src/interp/vmlisp.lisp treehake compiler 20110708 tpd src/interp/modemap.lisp treeshake compiler diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index df34d98..efde134 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3532,5 +3532,7 @@ books/bookvol9 use \defsdollar and \refsdollar
books/bookvol9 treeshake compiler
20110708.01.tpd.patch books/bookvol9 treeshake compiler
+20110708.02.tpd.patch +books/bookvol9 treeshake compiler
diff --git a/src/interp/modemap.lisp.pamphlet b/src/interp/modemap.lisp.pamphlet index 8eee908..c2b2d95 100644 --- a/src/interp/modemap.lisp.pamphlet +++ b/src/interp/modemap.lisp.pamphlet @@ -13,77 +13,6 @@ (IN-PACKAGE "BOOT" ) -;--% EXTERNAL ROUTINES -; -;--These functions are called from outside this file to add a domain -;-- or to get the current domains in scope; -; -;domainMember(dom,domList) == or/[modeEqual(dom,d) for d in domList] - -(DEFUN |domainMember| (|dom| |domList|) - (PROG () - (RETURN - (SEQ (PROG (G166077) - (SPADLET G166077 NIL) - (RETURN - (DO ((G166083 NIL G166077) - (G166084 |domList| (CDR G166084)) (|d| NIL)) - ((OR G166083 (ATOM G166084) - (PROGN (SETQ |d| (CAR G166084)) NIL)) - G166077) - (SEQ (EXIT (SETQ G166077 - (OR G166077 - (|modeEqual| |dom| |d|)))))))))))) - -;--% MODEMAP FUNCTIONS -; -;--getTargetMode(x is [op,:argl],e) == -;-- CASES(#(mml:= getModemapList(op,#argl,e)), -;-- (1 => -;-- ([[.,target,:.],:.]:= first mml; substituteForFormalArguments(argl,target)) -;-- ; 0 => MOAN(x," has no modemap"); systemError [x," has duplicate modemaps"])) -; -;getModemap(x is [op,:.],e) == -; for modemap in get(op,'modemap,e) repeat -; if u:= compApplyModemap(x,modemap,e,nil) then return -; ([.,.,sl]:= u; SUBLIS(sl,modemap)) - -(DEFUN |getModemap| (|x| |e|) - (PROG (|op| |u| |sl|) - (RETURN - (SEQ (PROGN - (SPADLET |op| (CAR |x|)) - (DO ((G166111 (|get| |op| '|modemap| |e|) - (CDR G166111)) - (|modemap| NIL)) - ((OR (ATOM G166111) - (PROGN (SETQ |modemap| (CAR G166111)) NIL)) - NIL) - (SEQ (EXIT (COND - ((SPADLET |u| - (|compApplyModemap| |x| |modemap| - |e| NIL)) - (RETURN - (PROGN - (SPADLET |sl| (CADDR |u|)) - (SUBLIS |sl| |modemap|)))) - ('T NIL)))))))))) - -;getUniqueSignature(form,e) == -; [[.,:sig],:.]:= getUniqueModemap(first form,#rest form,e) or return nil -; sig - -(DEFUN |getUniqueSignature| (|form| |e|) - (PROG (|LETTMP#1| |sig|) - (RETURN - (PROGN - (SPADLET |LETTMP#1| - (OR (|getUniqueModemap| (CAR |form|) - (|#| (CDR |form|)) |e|) - (RETURN NIL))) - (SPADLET |sig| (CDAR |LETTMP#1|)) - |sig|)))) - ;getUniqueModemap(op,numOfArgs,e) == ; 1=#(mml:= getModemapList(op,numOfArgs,e)) => first mml ; 1<#mml =>