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
: : 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 26 December 1998 using the texi2html translator version 1.52.