To assist in the conceptual organization of a programming language environment, we introduce the notion of a tool. An environment is a set of communicating tools. Each tool performs one or more related tasks around a single source tree. Since the source tree is displayed in a ctedit, we often have the impression that it controls the environment. In fact, the source, though central to the environment, is passive. It is the tools -editors, pretty printers, type checkers, etc.- that initiate activity around the tree.

A tool is not a program. A tool is an object that performs a task by way of a program (in Typol, Le-Lisp, etc.). Each tool is an instance of a tool class. Tool classes specify the information that the tool keeps track of in order to function correctly.

For more information about tools and environments in general, please consult the environment guide in the Mantle.