On Mon, 11 Jun 2007, Waldek Hebisch wrote:

| Gaby, did you look how Axiom uses arrays of function pointers? 

Yes.  :-)

| At
| the first glance they are like vtables.  But there is a fundamental
| difference: Spad domain uses only its own domain vector -- it never
| directly uses ancestor vector.
  ^^^^^^^^

What do yo mean by "never directly"?

check out lookupCompete and lookupIncomplete.

[...]

| There are issues with coherence, but IMHO they are unavoidable
| given static typechecking and dynamic runtime:  Spand compiler
| checks that intefaces to domians are compatible at compile
| time, but you may redefine things in incompatible way and
| recompile only some objects later.

Why do you believe this is unavoidable?

| Say you compile D which
| references Integer.  Later you redefine Integer in incompatible
| way and recompile Integer (but keep ald object for D). 

The system should be able to catch that, precisely.

| D 
| references Integer by name and in fresh inage will pick
| new definition of Integer, giving runtime problems.

this is one root of the problem.  Another root is the way lookup
functions work.

[...]

| AFAICS problems of "post facto extensions" have nothing to do
| with usage of arrays to cache lookups.  IMHO main problem is
| that Axiom has just one "handle" to access given domain.
| Namely domain Integer defines function also  named Integer
| which build domain vector.

I don't think, that is the main problem.

-- Gaby


_______________________________________________
Axiom-developer mailing list
Axiom-developer@nongnu.org
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to