Chapter 2
Syntax
Definitions
A definition is either a call to a user-defined defining macro, a call to a built-in defining macro, or a special definition. Typically, a definition defines a binding in the module containing the definition. Some definitions define more than one binding, and some do not define any bindings.
A user-defined defining macro is a macro that defines a
definition in terms of other constructs. A call to a user-defined defining macro always
begins with the word define and includes the name of the defining macro. This
name when suffixed by
is the name of a visible binding whose
value is the defining macro. The rest of the syntax of a call to a user-defined defining
macro is determined by the particular macro. Some definitions include a body. Advanced
programmers often define new defining macros as part of structuring a program in a readable
and modular way.-definer
A built-in defining macro is like a user-defined defining
macro but is specified as part of the Dylan language. There are eight built-in defining
macros: define class, define constant, define
generic, define domain, define library, define
method, define module, and define variable.
A special definition is a definition construct that is built
into the grammar of Dylan. There is only one special definition: define
macro.
An implementation can add new kinds of definitions as language extensions. Such definitions may be implemented as special definitions. However, they will more commonly take the form of user-defined definition macros that are the values of bindings exported by implementation-defined modules.