Axiom's "solution" to the lattice problem is to use an interpreter
for user interaction. Instead of just talking to a top level lisp
command prompt, you interact with the interpreter.

The interpreter looks at the arguments and classifies them by type.
It looks for "modemaps" that define the functions (e.g. all lattice
functions) and finds a minimum type matching modemap. The process
is repeated "working outward" for the final expression type.

Thus Axiom has some 10000 functions with approximately 3000 names
in the name space. The user can explicitly override this process
in various ways.

You might say lattice(args)$Posets to explictly override the
interpreter (although it will fail if the argument types don't
match).

Given the limits of naming conventions by various fields of math,
the interpreter provides a way to overload names in useful and
naturals ways. Thus a single function (say, map) can have multiple
well defined meanings (there are 80 map functions in Axiom).

In compiled code (Spad), you must specify exactly which function
of which domain you intend to call. If you're ambiguous about it,
the compiler gives you a suitably ambiguous error message.

Perhaps someone might give some thought to a Sage-interpreter
that helps in name resolution rather than having 80 people 
try to define which "map" is the "correct" map.

Tim Daly



--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to