Skip to content

Latest commit

 

History

History
87 lines (65 loc) · 2.9 KB

README.md

File metadata and controls

87 lines (65 loc) · 2.9 KB

Poly/ML logo

Poly/ML

Poly/ML is a Standard ML implementation originally written in an experimental language called Poly. It has been fully compatible with the ML97 standard since version 4.0. For a full history, see here.

Poly/ML takes a conservative approach to the Standard ML language and avoids incompatible extensions. It has added various library extensions particularly the thread library. Poly/ML's active development and unique features make it an exceptional implementation.

Table of Contents

Features

  • Fast compiler
  • Preferred implementation for large projects such as Isabelle and HOL.
  • Foreign function interface - allows static and dynamic libraries to be loaded in Poly/ML and exposes their functions as Poly/ML functions. See here for an example of static linking.
  • Symbolic debugger
  • Windows programming interface
  • Thread library - provides a simplified version of Posix threads modified for Standard ML and allows Poly/ML programs to make use of multiple cores. The garbage collector is also parallelised.

Basis

The documentation for the Poly/ML Basis library can be found here and includes information on global values and types as well as structures, signatures and functors. More in-depth documentation can be found at the SML Family website here.

Platforms and Installation

Poly/ML has native support for i386 (32- and 64-bit) and bytecode support for unsupported architectures. For more information, see the download page.

Debian/Ubuntu

$ apt-get install polyml

OS X

$ brew install polyml

FreeBSD

$ cd /usr/ports/lang/polyml && make install

Git

To build:

$ ./configure
$ make
$ make install

To clean:

$ make clean-local clean distclean

Support

Support for Poly/ML can be found on Stackoverflow using the polyml and sml tags or on the Poly/ML mailing list provided by the University of Edinburgh.