1<img src="http://www.polyml.org/images/Poly_Parrot3.gif" alt="Poly/ML logo" height="100" > 2 3# Poly/ML 4 5Poly/ML is a Standard ML implementation originally written in an experimental 6language called [Poly](http://www.polyml.org/Doc.html#poly). It has been 7fully compatible with the [ML97 standard](http://sml-family.org/sml97-defn.pdf) 8since version 4.0. For a full history, see [here](http://www.polyml.org/FAQ.html#history). 9 10Poly/ML takes a conservative approach to the Standard ML language and avoids 11incompatible extensions. It has added various library extensions particularly 12the thread library. Poly/ML's active development and unique 13features make it an exceptional implementation. 14 15## Table of Contents 16* [Features](#features) 17* [Basis](#basis) 18* [Platforms and Installation](#platforms-and-installation) 19* [Support](#support) 20 21## Features 22 23* Fast compiler 24* Preferred implementation for large projects such as [Isabelle](https://isabelle.in.tum.de/) 25 and [HOL](https://hol-theorem-prover.org/). 26* [Foreign function interface](http://www.polyml.org/documentation/Tutorials/CInterface.html) - allows 27 static and dynamic libraries to be loaded in Poly/ML and 28 exposes their functions as Poly/ML functions. See [here](https://www.mail-archive.com/polyml@inf.ed.ac.uk/msg00940.html) 29 for an example of static linking. 30* [Symbolic debugger](http://www.polyml.org/documentation/Tutorials/Debugging.html) 31* [Windows programming interface](http://www.polyml.org/documentation/Tutorials/WindowsProgramming.html) 32* [Thread library](http://www.polyml.org/documentation/Reference/Threads.html) - provides a 33 simplified version of Posix threads modified for Standard ML and 34 allows Poly/ML programs to make use of multiple cores. The garbage collector is also 35 parallelised. 36 37## Basis 38 39The documentation for the Poly/ML Basis library can be found [here](http://www.polyml.org/documentation/Reference/Basis.html) 40and includes information on global values and types as well as structures, 41signatures and functors. More in-depth documentation can be found at 42the SML Family website [here](http://sml-family.org/Basis/manpages.html). 43 44## Platforms and Installation 45 46Poly/ML has native support for i386 (32- and 64-bit) and bytecode support for unsupported 47architectures. For more information, see the [download](http://www.polyml.org/download.html) 48page. 49 50### Debian/Ubuntu 51 52```bash 53$ apt-get install polyml 54``` 55 56### OS X 57 58```bash 59$ brew install polyml 60``` 61 62### FreeBSD 63 64```bash 65$ cd /usr/ports/lang/polyml && make install 66``` 67 68### Git 69 70To build: 71 72```bash 73$ ./configure 74$ make 75$ make compiler 76$ make install 77``` 78 79To clean: 80```bash 81$ make clean-local clean distclean 82``` 83 84## Support 85 86Support for Poly/ML can be found on Stackoverflow using the [polyml](http://stackoverflow.com/questions/tagged/polyml) 87and [sml](http://stackoverflow.com/questions/tagged/sml) tags or on the Poly/ML 88[mailing list](http://lists.inf.ed.ac.uk/mailman/listinfo/polyml) provided by the University of Edinburgh. 89