The term interpreter is used, even though most implementations of Dylan are
expected to be compiled. In most cases, an interpreter will be implemented
by compiling Dylan expressions and immediately executing the compiled code.
A heterarchyalso called a directed acyclic graph (DAG)is like a hierarchy,
except that nodes can have multiple parents. Dylan classes are in a
heterarchy because Dylan supports multiple inheritance.
Setter variables are not normally used for holding simple values like this.
However, nothing in the language semantics prevents such uses. The example
is given here, because a more realistic example would require more of the
language than has been introduced so far.
define cannot be used to create lexical variables, as it can in Scheme. In
Dylan, even if define appears inside another definition, the define still
creates a module variable.
In the general case, reflective operations can be used to defeat module
encapsulation. For example, a programmer can trace from an instance to its
class by calling object-class on the instance, even if the implementor of
the class did not export the variable containing the class. This problem
can sometimes be solved by the proper use of sealing, which blocks many
reflective operations.
The forms in this list will usually be module variables but are not required
to be. An element in the superclass list can be any form that evaluates to
a class.