diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet index a24a47c..057850e 100644 --- a/books/bookvol10.4.pamphlet +++ b/books/bookvol10.4.pamphlet @@ -4175,7 +4175,7 @@ AnyFunctions1(S:Type): with )set message test on )set message auto off )clear all ---S 1 of 6 +--S 1 of 9 getDomains 'Collection --R --R @@ -4193,7 +4193,7 @@ getDomains 'Collection --R Type: Set(Symbol) --E 1 ---S 2 of 6 +--S 2 of 9 difference(getDomains 'IndexedAggregate,getDomains 'Collection) --R --R @@ -4204,7 +4204,7 @@ difference(getDomains 'IndexedAggregate,getDomains 'Collection) --R Type: Set(Symbol) --E 2 ---S 3 of 6 +--S 3 of 9 credits() --R --RAn alphabetical listing of contributors to AXIOM: @@ -4300,13 +4300,13 @@ credits() The summary command simply types out the contents of the file \$AXIOM/lib/summary so no output is captured in the spool file. \begin{chunk}{ApplicationProgramInterface.input} ---S 4 of 6 +--S 4 of 9 summary() --R --R Type: Void --E 4 ---S 5 of 6 +--S 5 of 9 )show API --R --R ApplicationProgramInterface is a package constructor @@ -4321,7 +4321,7 @@ summary() --R --E 5 ---S 6 of 6 +--S 6 of 9 getAncestors 'IndexedAggregate --R --R @@ -4330,6 +4330,47 @@ getAncestors 'IndexedAggregate --R HomogeneousAggregate, InnerEvalable, SetCategory, Type} --R Type: Set(Symbol) --E 6 + +--S 7 of 9 +reportInstantiations(true) +--R +--R Type: Void +--R# instantiated/# dropped/domain name +--R------------------------------------ +--R Totals: 0 instantiated +--R 0 inside coerceInteractive +--R 0 inside canCoerceFrom +--R 0 inside evalMmCond +--R 0 reinstantiated +--R 0 dropped +--R 0 distinct domains instantiated/dropped +--E 7 + +--S 8 of 9 +1 +--R +--R +--R (7) 1 +--R Type: PositiveInteger +--R# instantiated/# dropped/domain name +--R------------------------------------ +--R1 0 PositiveInteger +--R1 0 NonNegativeInteger +--R Totals: 2 instantiated +--R 0 inside coerceInteractive +--R 0 inside canCoerceFrom +--R 0 inside evalMmCond +--R 0 reinstantiated +--R 0 dropped +--R 2 distinct domains instantiated/dropped +--E 8 + +--S 9 of 9 +reportInstantiations(true) +--R +--R Type: Void +--E 9 + )spool )lisp (bye) \end{chunk} @@ -4384,6 +4425,70 @@ getAncestors 'IndexedAggregate HomogeneousAggregate, InnerEvalable, SetCategory, Type} Type: Set(Symbol) +The reportInstantiations function information about what domains +are instantiated by an expression. In a clean Axiom you'll see + +(1) -> reportInstantiations(true) + Type: Void +# instantiated/# dropped/domain name +------------------------------------ +1 0 Void +1 0 String +1 0 SingleInteger +1 0 PrimitiveArray(OutputForm) +1 0 OutputForm +1 0 List(OutputForm) +1 0 Integer +1 0 Character + Totals: 8 instantiated + 0 inside coerceInteractive + 0 inside canCoerceFrom + 0 inside evalMmCond + 0 reinstantiated + 0 dropped + 8 distinct domains instantiated/dropped + +Which shows that 8 domains were instantiated. +If a new domain is requested, more will be instantiated. + +(2) -> 1 + + (2) 1 + Type: PositiveInteger +# instantiated/# dropped/domain name +------------------------------------ +1 0 PositiveInteger +1 0 NonNegativeInteger + Totals: 2 instantiated + 0 inside coerceInteractive + 0 inside canCoerceFrom + 0 inside evalMmCond + 0 reinstantiated + 0 dropped + 2 distinct domains instantiated/dropped + +However, this happens only once. Invoking already instantiated +domains does nothing since they already exist. + +(3) -> 1 + + (3) 1 + Type: PositiveInteger +# instantiated/# dropped/domain name +------------------------------------ + Totals: 0 instantiated + 0 inside coerceInteractive + 0 inside canCoerceFrom + 0 inside evalMmCond + 0 reinstantiated + 0 dropped + 0 distinct domains instantiated/dropped + +We call the function with false to turn off this information. + +(4) -> reportInstantiations(false) + Type: Void + \end{chunk} \pagehead{ApplicationProgramInterface}{API} \pagepic{ps/v104applicationprograminterface.ps}{API}{1.00} @@ -4420,6 +4525,13 @@ ApplicationProgramInterface(): Exports == Implementation where ++ summary() prints a short list of useful console commands ++ ++X summary() + reportInstantiations: Boolean -> Void + ++ A debugging tool to show instantiation information + ++ + ++X reportInstantiations(true) + ++X 1 + ++X reportInstantiations(false) + Implementation ==> add getDomains(cat:Symbol):Set(Symbol) == set [symbol car first destruct a _ @@ -4433,6 +4545,10 @@ ApplicationProgramInterface(): Exports == Implementation where summary() == ( summary()$Lisp ; void() ) + reportInstantiations(b:Boolean): Void == + REPORTINSTANTIATIONS(b)$Lisp + void + \end{chunk} \begin{chunk}{API.dotabb} "API" [color="#FF4488",href="bookvol10.4.pdf#nameddest=APPRULE"] diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index b7a8b88..fd5bb63 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -39208,6 +39208,13 @@ but the Axiom semantics are not the same. Because Axiom was originally written in Maclisp, then VMLisp, and then Common Lisp some of these old semantics survive. +\section{ApplicationProgramInterface} +\defun{reportinstantiations}{Report what domains get instantiated} +\begin{chunk}{defun reportinstantiations} +(defun reportinstantiations (b) + (setq |$reportInstantiations| b)) +\end{chunk} + \section{InputForm} \defun{unparseInputForm}{unparseInputForm} This fixes bug 7217. The default title generation is bogus. @@ -54815,6 +54822,7 @@ digits in TechExplorer. Since Saturn is gone we can remove it. \getchunk{defun replaceSharps} \getchunk{defun reportAO} \getchunk{defun reportCategory} +\getchunk{defun reportinstantiations} \getchunk{defun reportOperations} \getchunk{defun reportOpsFromLisplib} \getchunk{defun reportOpsFromLisplib0} diff --git a/changelog b/changelog index 9d562e3..1557497 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20140610 tpd src/axiom-website/patches.html 20140610.04.tpd.patch +20140610 tpd books/bookvol10.4,bookvol5 add reportInstantiations to API package 20140610 tpd src/axiom-website/patches.html 20140610.03.tpd.patch 20140610 tpd book/*.txt email cleanup 20140610 tpd src/axiom-website/patches.html 20140610.02.tpd.patch diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 774ae4d..d175135 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -4414,6 +4414,8 @@ books/bookvolbib add reference Yapp07 src/doc/msgs/s2-us.msgs remove .as extension from compiler msg 20140610.03.tpd.patch book/*.txt email cleanup +20140610.04.tpd.patch +books/bookvol10.4,bookvol5 add reportInstantiations to API package