SML# Document Version 4.0.0
III Reference manual

Chapter 25 Overview of SML# Libraries

As a functional language, SML# provides various data structures and their operations through a structure declaration containing types and function definitions. Related structures are bundled together in a source file (sml file) with an interface file (smi file) through SML# separate compilation system. In this document, we call a group of structures represented by an interface file as a library. Related libraries are hierarchically organized through _include statement of the SML# interface language.

The set of libraries provided by SML# are classified into the following categories.

  • Standard ML Basis Library

    This is a standard library for Standard ML language specified in [2]. It provides primitive functions for built-in data types IO primitives, and OS interface. SML# provides all the required structures of Standard ML Basis Library and some optional ones.

  • SML# Library

    They include the following support libraries for the SML# advanced features.

    • FFI library

    • SQL library

    • Thread library

    • Reify library

  • Miscellaneous utilities

    They provide various useful functions.

    • SML New Jersey Library

  • Tool support libraries

    They are libraries for using SML# programming tools in SML# programs. They include the following.

    • smlyacc and smllex support libraries

    • Printer generator SMLFormat support library

    • Unit test tool SMLUnit support Library

In this document, we define a library specification in the following format.

  • For the libraries such as those of Standard ML Basis Library for which a formal signature is define, we first show the signature and then for each structure that implements the signature, we give additional type instantiation information that are not represented by the signature.

  • For those that have no signature specification, we show their interface information. An interface contains type information for separate compilation that are not represented by the signature.