MLBasis ======= The ML Basis system extends <:StandardML:Standard ML> to support programming-in-the-very-large, namespace management at the module level, separate delivery of library sources, and more. While Standard ML modules are a sophisticated language for programming-in-the-large, it is difficult, if not impossible, to accomplish a number of routine namespace management operations when a program draws upon multiple libraries provided by different vendors. The ML Basis system is a simple, yet powerful, approach that builds upon the programmer's intuitive notion (and <:DefinitionOfStandardML: The Definition of Standard ML (Revised)>'s formal notion) of the top-level environment (a _basis_). The system is designed as a natural extension of <:StandardML: Standard ML>; the formal specification of the ML Basis system () is given in the style of the Definition. Here are some of the key features of the ML Basis system: 1. Explicit file order: The order of files (and, hence, the order of evaluation) in the program is explicit. The ML Basis system's semantics are structured in such a way that for any well-formed project, there will be exactly one possible interpretation of the project's syntax, static semantics, and dynamic semantics. 2. Implicit dependencies: A source file (corresponding to an SML top-level declaration) is elaborated in the environment described by preceding declarations. It is not necessary to explicitly list the dependencies of a file. 3. Scoping and renaming: The ML Basis system provides mechanisms for limiting the scope of (i.e, hiding) and renaming identifiers. 4. No naming convention for finding the file that defines a module. To import a module, its defining file must appear in some ML Basis file. == Next steps == * <:MLBasisSyntaxAndSemantics:> * <:MLBasisExamples:> * <:MLBasisPathMap:> * <:MLBasisAnnotations:> * <:MLBasisAvailableLibraries:>