Chapter 2



A statement is a call to a statement macro. It begins with the name of a visible binding whose value is a statement macro. The statement ends with the word end optionally followed by the same name that began the statement. In between is a program fragment whose syntax is determined by the macro definition. Typically this fragment includes an optional body; for example, if (ship.ready?) embark(passenger, ship) end if.

A statement macro can be built-in or user-defined.

A user-defined statement macro is a macro that defines how to implement a statement in terms of other constructs. Advanced programmers often define new statement macros as part of structuring a program in a readable and modular way.

A built-in statement macro is like a user-defined statement macro but is specified as part of the Dylan language. There are nine built-in statement macros: begin, block, case, for, if, select, unless, until, and while.

An implementation can add new kinds of statements as language extensions. Such a statement takes the form of a user-defined statement macro that is the value of a binding exported by an implementation-defined module.