Each file listed on the Sources page of the Reversi project window is now preceded by a + symbol. This means we can now expand a file name to reveal a list of all the Dylan definitions and top-level expressions in that file.
algorithms.dylan item by clicking the + next to it.
The definitions and expressions are sorted alphabetically under the file name in which they appear. Definitions are the Dylan name bindings created by compiling top-level definitions in the source code that the file contains. Thus define class causes a class name to appear in the list of definitions, define method a method name, and so on, but the names of accessors on a class's slots do not appear.
The expressions in the list are, roughly speaking, anything that appears at top level in the source file but is not a definition. Typically such expressions are assignments to global variables or function calls. For example, in the listing for algorithms.dylan, there are several top-level calls to the method install-algorithm, which stores values in a globally visible table. Expressions that are part of a larger expression, or part of a definition, are not shown.
In addition to the normal Dylan syntactic conventions--a leading dollar sign for a constant, enclosure in angle brackets for a class, and so on--icons appear next to definition names to indicate the kind of Dylan object to which the names are bound. Constants, for example, are indicated by an octagonal icon containing a stylized dollar sign (
). Expressions are indicated by a green octagon (
).
You can also see definitions (but not expressions) listed by library and module on the Definitions page. This page includes a facility for filtering definitions out of the visible list according to their type or whether their name contains a given string.
These lists are just one use to which the Functional Developer environment puts its compiler database, a rich collection of information that the compiler derives from every project it builds.
The fact that the compiler database is derived during compilation explains why the file names in the Sources page were not expandable when we first opened the Reversi project, and also why we would have seen that the Definitions page was empty at that time. The compiler database for Reversi did not exist until after we built the Reversi application. However, when we open the Reversi project in future sessions, Functional Developer will read in the database from disk.
Compiler databases are mostly used by the browser tool, which we will look at later. See "Compiler databases" on page 50 for more details of the compiler database and Chapter 5 for details of the browser.