The Standard ML module language comprises the mechanisms for structuring programs into separate units. Program units are called structures. A structure consists of a collection of components, including types and values, that constitute the unit. Composition of units to form a larger unit is mediated by a signature, which describes the components of that unit. A signature may be thought of as the type of a unit. Large units may be structured into hierarchies using substructures. Generic, or parameterized, units may be defined as functors.