This is both a comprehensive guide, and an excellent reference! I use it often when writing SML for side projects.<p>For those interested in parallel, functional programming, I recommend taking a look at Futhark, which leverages data parallelism to make very fast parallel programs. It is based on SML, and has similar syntax, but can automatically build programs that (among other targets) run on the GPU using CUDA or OpenCL. It is also worth checking out MPL, which extends the (already awesome) whole-program optimizing compiler MLton to add support for nested, fork-join parallelism.<p><a href="https://github.com/diku-dk/futhark">https://github.com/diku-dk/futhark</a><p><a href="https://github.com/MPLLang/mpl">https://github.com/MPLLang/mpl</a>
For editor support for Standard ML you can try Millet, a language server. <a href="https://azdavis.net/posts/millet/" rel="nofollow">https://azdavis.net/posts/millet/</a><p>There’s also <a href="https://smlhelp.github.io/book/" rel="nofollow">https://smlhelp.github.io/book/</a> which is mostly put together by current/past CMU students.<p>Note: I made Millet.
Standard ML is a very elegant language. It's one of the few languages that has a type system that actually makes sense.<p>For something truly mind bending, try understanding this implementation of printf in SML: <a href="http://mlton.org/Printf" rel="nofollow">http://mlton.org/Printf</a>
Does anyone here actually use SML for production or know of big projects (outside of academia) which uses it?<p>Compared to other functional langauges, it doesn't seem as popular.
There are some allusions here I think. The opening line of part 2, "All Standard ML is divided into two parts."<p>is a very strange English sentence to write. It actually sounds like the very famous opening line of Julius Caesar's "Commentary on the Gallic War" (which is prescribed as a model of Latin composition)<p>"All Gaul is divided into three parts..."<p>[1] <a href="https://en.wikisource.org/wiki/Commentaries_on_the_Gallic_War/Book_1" rel="nofollow">https://en.wikisource.org/wiki/Commentaries_on_the_Gallic_Wa...</a>
Whenever I see a Standard ML article/paper, it always reminds me that I still need to learn OCaml. Not that one is better than the other, just that I've not gotten around to learning OCaml yet.
For those running Debian or Ubuntu and interested to try the Standard ML of New Jersey,<p><pre><code> $ sudo apt install smlnj
$ sml
Standard ML of New Jersey v110.79 [built: Sat Oct 26 12:27:04 2019]
-
</code></pre>
and you can hit the ground running.
ML is notable for its higher-order module system, which solves the same problems but is different than the type classes/protocols/traits of Haskell/Swift/Rust.
I found the initial example of a regex package hard to follow. I don't know the language and am confronted with this example, that makes use of many advanced capabilities of the language.<p>Instead I looked for a book for beginners in Standard ML and found "Elements of ML Programming" to be quite good.
I've loved SML ever since I worked through Okasaki's "Purely functional datastructures".<p>I use OCaml over SML these days although I've always thought that SML had slightly nicer syntax.