Steven, The function |Integer| is defined in int/algebra/INT.lsp.
The first time the function is executed it replaces itself in the $ConstructorCache. The real |Integer| function is called |Integer;| This function constructs the domain $ All of the function lookup for the function in Integer are actually indexes into the |infovec|. In fact, almost all of the interesting information about |Integer| lives on the property list. Try: )lisp (symbol-plist '|Integer|) Integer is actually a bad example as it is preloaded. If we look at DenavitHartenbergMatrix when we first start we see: )lisp (symbol-plist '|DenavitHartenbergMatrix|) and you can see that the property list contains only one element. This element is the DATABASE vector which contains information enabling lookups in various databases. There are some numbers as the value of some slots (e.g. CONSTRUCTORMODEMAP 383583) and these are absolute byte offsets into the various databases. If you say )lisp (setq *miss* t) you can see all of the attempts to look up information. This tells you the domain being looked up and the property being requested. Doing a:DHMATRIX(FLOAT) )lisp (symbol-plist '|DenavitHartenbergMatrix|) you'll see that the CONSTRUCTORMODEMAP property was looked up in the database (as well as the ABBREVIATION, COSIG, CONSTRUCTORKIND). Now do )lisp (symbol-plist '|DenavitHartenbergMatrix|) and you can see these fields have been populated. m := new(4,4,0)$DHMATRIX(DoubleFloat) )lisp (symbol-plist '|DenavitHartenbergMatrix|) you can see that the property list has been further populated. Now we see the OPERATIONALIST has been populated. Further details are in src/doc/developernotes.pamphlet. Tim _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer