Data Structures
The fact that Forth uses a stack for parameter passing between words makes it very powerful. It is because of the stack that the language is re-entrant and supports recursion. However, the dynamic nature of the stack makes it unsuitable for global data. Fortunately, Forth is not limited to using the stack, as the language provides for both named constants and variables.
A constant is declared by placing the value for the constant onto the stack, then the word constant followed by the constant name. For example, the following code declares a constant called kilobyte (representing the number of bytes in a K) to have a value of 1024:
1024 constant kilobyte
Using the constant in your code is trivial. Simply use the constant name to place the value onto the stack:
kilobyte
For example, here is a word definition that takes a value from the stack for a number of kilobytes, converts this into bytes, and prints out the result:
: kilobytes (N -- , convert N to bytes) kilobyte * . ." bytes" cr ;
So, typing:
32 kilobytes
gives a result on the console of:
32768 bytes
There is an alternative way to declare a constant. Simply define a word that places that value onto the stack:
: myconstant
908612
;This is not as efficient as using the constant word, but it works just the same.
Variables are declared in a similar way to constants, but the way they are used is quite different. Rather than placing a value onto the stack, the variable name will place a pointer to the variable onto the stack. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access