Static and Dynamic Symbols

Symbols, along with parentheses, are used for building ground expressions.

Syntax

Symbol = StaticSymbol | DynamicSymbol.
StaticSymbol = Character | Word | Number.
DynamicSymbol = ReferenceToFunction | ReferenceToTable |
     ReferenceToBox | ReferenceToVector |
     ReferenceToString | ReferenceToChannel.

Purpose

The symbols are divided into two classes: static symbols and dynamic symbols.

A static symbol is either a character symbol, a word symbol, or a numeric symbol.

The static symbols exist "objectively": a static symbol may be written to an input/output channel, and then read back, the symbol read back being the same as the symbol that has been written. Thus, the static symbols, in a sense, exist before the program is run, and continue to exist after the program has been run.

A dynamic symbol is either a reference to a function definition or to an object. This symbol contains a pointer to the memory location where the function definition or the object resides at run time.

The dynamic symbols, in contrast to the static ones, exist "subjectively". A dynamic symbol is created either at the moment the program is loaded, or when the program is being executed. A dynamic symbol may be written into an input/output channel, but it cannot be read back. The execution of a program having terminated, all dynamic symbols created during the execution lose any meaning.

Related concepts
Character Symbols
Word Symbols
Numeric Symbols
Object Declarations
Function Declarations
Ground Expressions
Result Expressions
Patterns
Hard Expressions
Constant Declarations