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

Reply via email to