axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Axiom-developer] Consistency (was Lazy Evaluation)


From: Bob McElrath
Subject: Re: [Axiom-developer] Consistency (was Lazy Evaluation)
Date: Thu, 23 Jun 2005 14:11:33 -0700
User-agent: Mutt/1.5.6+20040523i

Page, Bill address@hidden wrote:
> > I don't disagree that most *finished* worksheet read from
> > top to bottom, and the commands run from top to bottom, but
> > that need not be the norm. Document is a good analogy: modern
> > documents are not linear, because we now have hyperlinks;
> > we can, and want to, skip around! A program is the same,
> > the code need not be linear in structure: we may have parts
> > A, B, C in parallel followed by D that depends on A, B, C;
> > code can even have a circular structure (like Axiom
> > domains). Compilers do code optimization by exploring the
> > non-linear structure of the code.
> 
> I think that that is a very good point.

Perhaps it would be good to point out that even within one
document/worksheet, one could have independent subsets.  e.g. If section
A does not depend on any definitions from outside, then it exists as an
independent unit.  Functions defined there can be used elsewhere,
without causing anything in section A to be recomputed.

C++ and other languages have elevated this to the level of "namespaces"
which is an incredibly good idea.  Mma/Maple worksheets tend to have a
poor separation between global and local variables.  Over-use of global
variables was recognized long ago as a large source of errors and bugs.
Yet in math we assume implicitly that there is one global namespace.

My point is that lazy re-evaluation is not mutually exclusive with
non-linear documents.

Circular dependencies, however, deserve more thought.  This could break
lazy re-evaluation logic.  But, is there any *sensible* document with
circular dependencies?  I would call a circular dependency a "bug".
(one which an intelligent front-end could warn the user about)

Here is some discussion on this from the smv language (some kind of
formal verification tool)
    http://www.cis.ksu.edu/santos/smv-doc/language/node17.html
In the realm of classes, people seem to agree that creating interfaces
is the way to remove cyclical dependencies:
    http://java.sun.com/docs/books/tutorial/java/concepts/interface.html
Another recommended method to resolve circular dependencies is to
specify an evaluation order.  However, that's exactly what is provided
by a worksheet.

--
Cheers,
Bob McElrath [Univ. of California at Davis, Department of Physics]

    "One of the best ways to get yourself a reputation as a dangerous citizen
    these days is to go about repeating the very phrases which our founding
    fathers used in the great struggle for independence." --Charles A. Beard

Attachment: signature.asc
Description: Digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]