Purity is almost used in a pejorative sense throughout the page.<p>If it wasn't for poor library support, I would prefer using SML to OCaml. SML is syntactically simpler and both SML/NJ and MLton have a lot to offer that I haven't yet found with OCaml.<p>I think one of the biggest mistakes in the life cycle of SML was premature specification. As a result of the language definition, SML has stagnated for almost 20 years. There is now some notion of "Successor ML" (see: <a href="http://sml-family.org/" rel="nofollow">http://sml-family.org/</a>), but I honestly don't see it catching on outside of an academic space.<p>As an academic language, SML is great. It is a great tool for learning functional programming since the learning curve isn't especially steep. It is easy to reason about performance since evaluation order is explicit. And immutability is the default but with mutable types that are easy to use.
ML's syntax is indeed less confusing than OCaml's. And that's the reason I'm working on a compiler front-end replacement for OCaml inspired by Clojure, Haskell, Ruby and Julia. It will be for OCaml what Elixir is for Erlang. I'm finishing the parser right now and will next implement the language primitives as a library in the language itself.
Small update: recent versions of OCaml have immutable strings too.<p>It also miss mention of package manager (OCaml has Opam, which is awesome, I don't know about SML).<p>And ocamlbuild is missing from the build tools section.
I really enjoy working with SML (I've used sml/nj and parrotml) - and would love to use it for "real" projects, but until it actually has decent unicode support, there's just no way I can.
including mythryl, a sml/nj derivative with c-flavored syntax to the comparison would be interesting. see <a href="http://mythryl.org/" rel="nofollow">http://mythryl.org/</a> for further info.