Mathematica Evaluation Process
- To: mathgroup at smc.vnet.net
- Subject: [mg39597] Mathematica Evaluation Process
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Tue, 25 Feb 2003 02:57:10 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
For a long time I have wanted to include on my webstite an explanation of all processing an expression goes through from input to output (ignoring the Math Link protocal). Omega Consulting just put out a partial explanation at http://omegaconsultinggroup.com/Services/ezv2i02.html Many years ago David Withoff gave the explanation posted at http://library.wolfram.com/database/Conferences/4683/ As far as I am aware the most complete explanation was giiven by David Wagner in his book "Power Programming With Mathematica The Kernel". Unfortunately this wonderful book is out of print! However, there are some things that have never been explained as far as I know. (1) How does pattern matching and all the tricky things that go with it (HoldPattern, Verbatim, OneIdentity, DefaultValues, ...) fit into the Mathematica evaluation process? (2) How do definitions assigned to $PreRead, $Pre, $Post, $PrePrint, MakeExpression, MakeBoxes, Format[symb] fit into the evaluation process? I tried to explain what these things do and the order in which they are used on my website. See http://www.verbeia.com/mathematica/tips/HTMLLinks/Tricks_170.html but I couldn't determine with good confidence where they fit in the evaluation process. (3) The definition foo[a_][x_,y_]:={a,x^2-y^2} is stored in SubValues[foo]. When in the evaluation process is such a definition used? (4) A definitions for N[foo[x_]] is stored in NValues[foo]. When in the evaluation process are the NValues used? (5) When in the evaluation process does the kernel use or change assignments to $IterationLimit, $HistoryLength, $MessageList, Out[n]? ---------------------- Regards, Ted Ersek