More precisely, they have no interpretation semantics (see section Interpretation and Compilation Semantics)
In compiler construction terminology, all places dominated by the definition of the local.
In standard terminology, "appends to the current definition".
In standard terminology: The default interpretation semantics are its execution semantics; the default compilation semantics are to append its execution semantics to the execution semantics of the current definition.
This feature is also known as extended records. It is the main innovation in the Oberon language; in other words, adding this feature to Modula-2 led Wirth to create a new language, write a new compiler etc. Adding this feature to Forth just requires a few lines of code.
Moreover, for any word that calls
catch and was defined before loading
objects.fs, you have to redefine it like I redefined
: catch this >r catch r> to-this ;
This is Self terminology; in C++ terminology: virtual function table.
In my opinion, though, you should think thrice before using a doubly-linked list (whatever implementation).
Unfortunately, long longs are not implemented properly on all machines (e.g., on alpha-osf1, long longs are only 64 bits, the same size as longs (and pointers), but they should be twice as long according to see section `Double-Word Integers' in GNU C Manual). So, we had to implement doubles in C after all. Still, on most machines we can use long longs and achieve better performance than with the emulation package.
We use a one-stack notation, even though we have separate data and floating-point stacks; The separate notation can be generated easily from the unified notation.
This document was generated on 13 April 2000 using texi2html 1.56k.