"Page, Bill" wrote: > > On Tuesday, June 14, 2005 11:52 PM Tim Daly wrote: > > > > > \spadcommand{x:=2}\bound{x} > > > > \spadcommand{y:=3}\bound{y} > > > > \spadcommand{x*y}\free{x}\free{y} > > > > > > > > clicking on the third expression tells the browser that it needs to > > > > find a meaning for x and a meaning for y somewhere prior in the page. > > > > these are determined by the \bound expression. > > > > > > Can you give an example? > > > > cd mnt/linux/doc/hypertex/pages > > fgrep free * > > Yes, I see it everywhere. But what does it do? > > You said: "clicking on the third expression tells the browser that > it needs to find a meaning for x and a meaning for y somewhere prior > in the page." > > What do you mean by "find a meaning for x"? Do you mean that when > you click on some expression (presumably intending that Axiom execute > this expression), that the browser actually builds some kind of > dependency tree and then executes (i.e. passes commands to Axiom) > the minimum number of commands needed to compute this expression? > This would be a form of lazy evaluation.
This is exactly what the Axiom browser can do. In hyperdoc, if you click on an example, you can click on any of the command lines even though the command depends on earlier commands. It then opens a new frame in Axiom (that is, a totally new and independent session) to perform the computation, making sure to resolve all the referenced variables (I think on the same page) before completing the clicked command. This technology is one that I find extremely clever and so far, I have not seen the like of it (in Mathematica FrontEnd or Maple). One way to appreciate this would be to try to imitate that in MathAction pages. The advantage would be that no Axiom calls are made until the user initiates it (this would allow some test code that are computationally intensive without affecting user interactions like minor editing), but the user can initiate it at any command, rather than click through from beginning to end one by one (which presents the problem of missing one and causing subsequent problems). Also, by starting a new frame, a user can immediately modify the command to "play" with it, or insert any other commands. > If this is the case, then Axiom's browser is doing a lot more than > just browsing. This is more or less the problem to which I was > referring when I asked in a previous email what we could do about > a set of related pages in which one page contained Axiom calculations > that depended calculations contained on one another page. In that > case I can see how this "free" and "bound" thing might be used. These declaration is how hyperdoc knows which commands on the example page need to be fed to the new Axiom frame. > Does the Axiom browser only look for bound variables occurring > earlier on the same page? I'll let Tim answer this one. (I believe so). One more comment on this Axiom browser discussion: I think the most urgent task is not to reimplement hyperdoc, but to make sure that it still works as it was (say in the NAG version). (see new Issue #168). William _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer