Sha256: ad7b102ad2f87bcd37c4346cf140187ebd5db64cb60be4db4420d434a9f1be6e

Contents?: true

Size: 1.8 KB

Versions: 163

Compression:

Stored size: 1.8 KB

Contents

[Standard ML (SML)](https://en.wikipedia.org/wiki/Standard_ml) is one of the two main dialects of the ML programming
language. [ML](https://en.wikipedia.org/wiki/ML_programming_language) was the first strong statically typed language,
developed in the early 1970s at the University of Edinburgh. 

Despite it's age, SML feels very young in many ways; SML had features that mainstream languages would not pick up for decades and are still being experimented with today.

Here are some of ML's "cutting-edge" features:

- [**strong** static typing](https://en.wikipedia.org/wiki/Type_system#Static_typing)
- [automatic type inference](https://en.wikipedia.org/wiki/Type_inference)
- exception handling
- [pattern matching](https://en.wikipedia.org/wiki/Pattern_matching)
- parametric polymorphism
- [first class functions](https://en.wikipedia.org/wiki/First-class_function)

SML was originally designed for developping proofs about first-order predicate calculus (read: _computer programs_)
and it can have a distinct academic feel about it.

However it's emphasis on immutability and strong typing has led SML to be used in many fields where program correctness is paramount (compiler design, code analysis, financial systems, medical systems, etc...).

Learning SML makes you a better programmer, because it forces you to write code that is stateless and to use closures
effectively.

It's also many programmers first introduction to pattern matching and (truely) strong typing. And because SML's type system is so strong and well-thought out, it often feels like you are working in a dynamically typed language instead.

There are several popular implementations:

- [MLton](http://mlton.org/)
- [SML/NJ](http://www.smlnj.org/)
- [PolyML](http://www.polyml.org/). 

You can find information on the language on each implementation's sites. 

Version data entries

163 entries across 163 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/sml/docs/ABOUT.md
trackler-2.2.1.179 tracks/sml/docs/ABOUT.md
trackler-2.2.1.178 tracks/sml/docs/ABOUT.md
trackler-2.2.1.177 tracks/sml/docs/ABOUT.md
trackler-2.2.1.176 tracks/sml/docs/ABOUT.md
trackler-2.2.1.175 tracks/sml/docs/ABOUT.md
trackler-2.2.1.174 tracks/sml/docs/ABOUT.md
trackler-2.2.1.173 tracks/sml/docs/ABOUT.md
trackler-2.2.1.172 tracks/sml/docs/ABOUT.md
trackler-2.2.1.171 tracks/sml/docs/ABOUT.md
trackler-2.2.1.170 tracks/sml/docs/ABOUT.md
trackler-2.2.1.169 tracks/sml/docs/ABOUT.md
trackler-2.2.1.167 tracks/sml/docs/ABOUT.md
trackler-2.2.1.166 tracks/sml/docs/ABOUT.md
trackler-2.2.1.165 tracks/sml/docs/ABOUT.md
trackler-2.2.1.164 tracks/sml/docs/ABOUT.md
trackler-2.2.1.163 tracks/sml/docs/ABOUT.md
trackler-2.2.1.162 tracks/sml/docs/ABOUT.md
trackler-2.2.1.161 tracks/sml/docs/ABOUT.md
trackler-2.2.1.160 tracks/sml/docs/ABOUT.md