On Tuesday, June 21, 2005 5:05 PM Bob McElrath > Kai Oliver Kaminski [EMAIL PROTECTED] wrote: >> What kind of dependency tracking would you need? Just within a >> single page? For multiple pages? Send me use cases, tell me what >> you need. > >I've been thinking about this a lot lately.
Although I have not played with this much but both Tim Daly and William Sit assure me that the old Axiom Hypertex browser already implements this kind of dependency tracking. That is apparently the purpose of the \free{} and \bound{} attributes embedded the Axiom commands contained in the hypertex pages. I would prefer to call this something like "lazy re-evaluation". I think it is notable that neither Maple nor Mathematica have lazy re-evaluation in their standard worksheet interfaces. But Maple (and perhaps Mathematica as well) does have a kind of "spread sheet" worksheet sub-mode that does this in the context of a tabular array of related commands. There is also an external interface between Maple and Excel (the Microsoft spreadsheet) that allows worksheet cells to contain Maple commands and display their output. This bring up a related issue: Maybe we should also be thinking about a similar interface between say OpenOffice spreadsheets and Axiom? For that matter, why not between OpenOffice documents in general and Axiom? I think the missing link here might be the ability to easily display LaTeX math in this environment - something that is possible given jsMath in a browser. And it is possible by design using TeXmacs. (BTW, TeXmacs has some interesting new features and there are some improvements that could be made to the existing TeXmacs - Axiom interface.) Unfortunately the authoring of hypertex pages in Axiom is not an easily accessible user feature, so in spite of having the possibiliy of lazy re-evaluation, right now it only applies to hypertex browser pages. It does not really provide this as a "worksheet" option as such. > Mathematica seems to keep an array of input and output. > (In[] and Out[]). If we treat these as simple variables, > dependency tracking would be as simple as keeping a linked > list among variables. (e.g. a "has" or "indeterminants" > function) In addition to that each variable would need a > "modified" flag. Any time a "modified" flag is toggled, > axiom could traverse the dependency tree and mark outputs > with a "recompute" flag. Of course Axiom also keeps a list of inputs and has a fairly sophisticated )history command. Can \free and \bound names really be determined automatically? I think it is awkward to require the use to declare them separately the way it is done now in the hypertex browser. Perhaps this is possible with the help of some new code in Axiom itself. Should this be a front-end browser function or a back-end Axiom function. For example a function in Axiom might be able to return the list of input history numbers of those commands that need to be re-executed. These could be mapped to corresponding output areas in the browser. > [clip nice example] > A user interface could choose to highlight out[1] as needs- > recomputing, or just go ahead and do it. (spreadsheet-style) I think it would be pretty neat if the browser could do such highlighting and very useful if with one click you could ask Axiom to minimally recompute just those comands that need re-computing. This should be quite easy in principle using the kind of AJAX techniques that Kai mentioned elsewhere. The hardest part would be writing the Axiom code that dynamically computes the dependency tree. Regards, Bill Page. _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer