Next: Advertised Interface
- After Demon A demon that executes after the main method. Useful for
postprocessing operations peculiar to a particular class or object,
such as type conversion of results, or maintaining the integrity of a
database or table, etc.. Also useful for debugging purposes, as it
may be used to log or display the results of an operation
independently of the main operation itself.
- Before Demon A demon that executes before the main method. Useful
for preprecessing operations peculiar to a particular class or object,
such as type conversion of input parameters. Also useful for
debugging purposes, as it may be used to log or display the arguments
to a function before the function is called.
- Binding Binding is the process of forming an association between a
name and an action. This may be the responsibility of the compiler,
or of the executing program. With a late binding system, a name may
be bound to an action at any point during the execution of a program.
- Class A class is a model for an object. Many different objects
may be generated that all follow the pattern of the class. Thus, a
class is a sort of defining word for objects. In Dreams, a class is
called a trance.
- Dream A dream is an altered situation that looks pretty much like
reality except that a few things are different. In a dream, the
definitions of certain specified words are altered. For variables and
other data objects, this alteration may be obtained by providing a
local data storage area for these words. This area is private to a
particular dream. For any definition, the alteration may also be a
reference to a different named or unnamed word. This permits the
behavior of colon definitions to be modified within the setting of a
- Dynamic Binding Dynamic binding is binding that occurs during the
execution of a program. Which action is associated with a particular
name is a function of what path the execution of the program has
taken, that is, the dynamic execution of the program.
- Early Binding Early binding occurs when an action is bound to a name
sometime prior to the execution of that name. The earliest binding
would be at compile time, when the compiler makes the association.
Early binding can also occur during program execution if dynamic
binding facilities are available. In this case, the binding would be
early if the association between a name and an action occured in a
different understanding from that in which it was used.
- Essence The essence of a dream is the data structure that defines the
local objects of that dream. The essence of a dream is an object that
may be manipulated and given a name. Due to the dynamic scoping of
dreams, the essence of a dream is insufficient to fully characterize a
dream: the dream only takes on a meaning within another dream, or
reality itself. The understanding of a dream is only defined while
the dream is actually occuring, and is a function of the essence of
the dream together with the understanding in which the dream occurs.
- Imagine A dream may imagine that the definition for a word is
different from reality. When this occurs, the reference that the
dream makes for that word is bound to a different definition than the
reference that is bound in reality.
- Inheritence Inheritence permits a dream to acquire default behavior
without having to explicitly specify that behavior. It is a powerful
factoring technique to reduce the complexity of programs. Inheritence
occurs when a dream is created, since the behavior of all its locally
known objects matches that of the understanding in which the creation
occurs. Inheritence also occurs when a dream is created from a class
defining word, since the behavior of the class is passed on by the act
of copying the class essence to make the dream's essence. Both of
these kinds of inheritence occur at the birth of a dream. This is
inheritence from parents. Another kind of inheritence occurs when a
thought is pondered in the understanding of a dream. The
understanding of a dream inherits the understanding in which the dream
occurs. Any locally known words in that dream have locally understood
behavior which overshadows, or overloads, the dynamically inherited
behavior of those words passed on at run time, but the dynamically
inherited behavoir of all words that do not have locally understood
behavior in that dream is still visable and in effect. This is
inherited from the environment.
- Late Binding Late binding occurs when the association between a name
and its action is defered until the time of that word's execution.
Late binding is desirable because it permits the same message to be
sent to different types of objects with different methods being
invoked. This in turn permits polymorphism.
- Message A message is a request for an object to perform an operation.
The message is sent to the object for the object to interpret in its
own understanding. In Dreams, the messages are called thoughts.
Thoughts are pondered within the dynamically late bound understanding
of a dream.
- Method A method is an operation peculiar to an object or class. In
many object oriented systems, methods must be specifically declared,
but in Dreams, any word may be a method, including colon definitions,
variables, and defining words.
- Milieu Milieu is the essence of the current dream. It is the
self-referential dream object. A thought may use milieu to make
reference to the dream in which it is being pondered. If such a
thought is pondered in several different dreams, milieu will always
provide the essence of the current dream in which the thought is being
- Object An object is the recipient of a message. In dreams, the dream
is the object that receives messages. Messages are pondered in the
understanding of the dream. In Dreams, messages, called thoughts, are
colon definitions, and they are sent to a dream by passing the
execution token of the message on the parameter stack. The dream
consumes the thought, along with any parameters passed on the stack
under the thought, ponders it in its own understanding, and returns
any results on the parameter stack just like any other Forth word.
- Overloading Overloading of methods or operators occurs when a new
action is bound to a name in a dream, thereby hiding the old binding.
When the dream finishes, the old binding is restored, thereby making
the original meaning visible again.
- Polymorphism Polymorphism refers to the ability of the same message
to be sent to different objects with different results. Thus the +
operator might be sent to an integer to perform integer arithmetic, or
to a floating point number to perform floating point arithmetic, or to
a string to perform concatenation. Dreams exhibits polymorphism
implicitly due to the dynamic binding nature of method determination.
- Ponder To ponder a thought is to invoke the Forth inner, or address,
interpreter on a thought. A thought may be pondered in the
understanding of reality, or in the understanding of a dream, or in a
dream within a dream, etc. To ponder a thought is to execute its
execution token within a particular understanding.
- See A thought may be seen in a vision in the same manner that it may
be pondered in a dream.
- Reality Reality is the normal Forth programming environment, where all the
usual words have all their usual meanings. This is what is usually
meant when reference is made to Forth. All dreams have their origins
in reality, in that they either begin in reality, or in a dream that
began in reality, etc.
- Regress A dream may regress by sending a thought back to be pondered
within the understanding from which that dream was invoked. When that
thought has been pondered, control will return to the dream that sent
the thought back. This is not the same thing as sending a thought to
the essence of the invoking dream, since in the first case, the active
dream's understanding is unbound, the thought pondered, and then the
sender's understanding is rebound, and the sender is allowed to
continue the dream. In the second case, the bindings of the invoking
dream are rebound as a new dream within the understanding of the
sender. In this case, it is not the same dream, since the sender's
understanding will be visible, whereas in the case of regression, the
sender's understanding is lifted to make visible once again the
- Relapse A relapse of a dream is a new instance of the essence of that
dream. It is a physical copy of the data structure of a dream.
This produces no new effect on alterations by reference in a dream.
Where modifiable data is involved, a relapse creates a new copy of
that data. The data will initially have the same value as the
original, but it has a separate and distinct existence, and
modifications to the original have no effect on the relaspe, nor do
modifications on the relapse have any effect upon the original.
- Stupor A dream about nothing. This provides a mechanism to ponder
thoughts in the current understanding. It has a minimal essence, and
is like any other dream in every respect.
- Thought A thought is a Forth word, known by its execution token, or
cfa. A thought is an object that may be manipulated and even given a
name. A thought is a message that is passed to a dream. This thought
is interpreted within the understanding of the dream, that is, using
the dream local definitions of the words in the thought.
- Understanding An understanding is the ensemble of all the currently
visible Forth words and their associated definitions. In reality, the
understanding is the normal Forth. In a dream state, this
understanding is altered because of the altered bindings of those
words whose meanings have been imagined inside the dream.
- Vision A vision is an ordered set of dreams. Visions provide a
cleanly packaged way to cause a thought to be pondered in a set of
nested dreams. Visions provide a simple way to specify and control a
network of multiple inheritence.
Next: Advertised Interface
Robert J. Brown