1. Rob Simmons
  2. prime


Clone wiki

prime / Home

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.

Downloading SBP

The SBP library can be downloaded as a .tar.gz, .zip, or .bz2 file 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.

SBP demo

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:

  • The Examples page lists the various examples, mostly designed to be run in Standard ML of New Jersey
  • The Larger systems page gives examples of incorporating the SBP library into a MLton, Standard ML of New Jersey, or PolyML project.