next up previous contents index
Next: Advertised Interface Up: Dreams Previous: Bibliography   Contents   Index



Glossary

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 dream.

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 pondered.

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 invoker's understanding.

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 up previous contents index
Next: Advertised Interface Up: Dreams Previous: Bibliography   Contents   Index
Robert J. Brown
1999-09-26