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