The SML Basis Prime
The Standard ML Basis is a bit of an oddball. It provides a number of basic datatypes and an extended set of operations on those datatypes; however, it does not do so in a complete fashion, nor does it try. For instance, many potentially helpful operations on lists and strings are left out, and the web page for the Standard ML Basis makes it clear that "The Library does not attempt to define higher-level APIs, such as collection types or graphical user-interface components."
The SML Basis Prime (SBP) is an attempt to design a ML library that provides some more advanced functionality that is not available in the Standard ML Basis. It is by no means alone; other projects such as The SML/NJ Library Tom 7's SML-LIB Library and Sean's SML-EXT Library have created other libraries with similar goals. The primary difference for this basis is that it is intended to be included "all at once" as a prelude, rather than in little chunks. It will probably make sense to include some bits separately; these bits should be generally large rather than generally small. See the page on design principles for more.
SBP is available under the maximally-flexible MIT License.
The SBP library can be downloaded as a
at the downloads page; it can
also be obtained from the using Mercurial by running the following command:
$ hg clone http://code.hyperkind.org/prime
The repository contains a single directory,
lib, which contains
the basis. The general idea is that, if you create a project by cloning the
SBP library, you can put the project source code in
src and then get
updates to the library by running the command
$ hg pull http://code.hyperkind.org/prime
at any point in the future.
The SBP demo, described below, demonstrates the use of many parts of the SBP library, and additionally shows how the SBP library can be incorporated into a larger project.
The SBP demo is a Mercurial repository whose parent repository is the SBP library; it inherits from the library much as any other project would. The home page for the demo repository is here on Bitbucket.
The wiki documents two of the features of the SBP demo repository: