F# is number 13;
ML is number 26;
Haskell is number 38;
OCaml is ranked below 50.
So the ML family of languages is way more popular than Haskell, but is fragmented.
Below are my impressions/experiences.
In general, the languages themselves are excellent, but the standard libraries vary in quality, as do the tool chains.
ML is eager by default, Haskell lazy. Otherwise, it's the same mindset (although some people will think Haskell went overboard on monads, some people think OCaml's libs aren't monadic enough)
For example f# is excellent in all of the above, but is _challenged_ in the multi-platform aspect.
OCaml's standard library is limited, but this is compensated with Opam. Considering OCaml on windows is simply looking for trouble. The OCaml compiler is good, but other tools are limited or a bit primitive (heap profilers, debuggers, performance profilers). The community is rather reserved, but very helpful.
Haskell standard library is also limited (for example you ain't gonna jump far with the string implementation that's offered by Prelude, and Num is also warted). The toolchain is better than OCaml's. Also Cabal has libs for everything, but ymmv. The community is really gentle and eager to help.
ML, sorry no experience, most other flavours seem dead or quiet. MLton is a really interesting compiler.
I forgot: learning a statically typed functional language will make you a better developer. There is a catch though: some people will just refuse to go back to the normal Java, C++ or python insanity.
>In general, the languages themselves are excellent, but the standard libraries vary in quality, as do the tool chains. ML is eager by default, Haskell lazy. Otherwise, it's the same mindset (although some people will think Haskell went overboard on monads, some people think OCaml's libs aren't monadic enough)
I think it's important to point out that Haskell is actually functionally pure (in that there are no side effects in the language), whereas ML does have references baked into the language, so you can revert back to writing Pascal-looking inner loops in Caml, for example.
I find it a bit curious to contrast Haskell and ML -- maybe it's because I did a course on programming languages twice, first with Standard ML as (one of) the "functional" languages, and again when Haskell had taken over that role (the course first (extensively) used Sethi's "Programming Languages").
I've always seen Haskell as a kind of ML off-shot, but perhaps the similarity is more in the syntax than in the substance?
F# is number 13; ML is number 26; Haskell is number 38; OCaml is ranked below 50.
So the ML family of languages is way more popular than Haskell, but is fragmented.
Below are my impressions/experiences.
In general, the languages themselves are excellent, but the standard libraries vary in quality, as do the tool chains. ML is eager by default, Haskell lazy. Otherwise, it's the same mindset (although some people will think Haskell went overboard on monads, some people think OCaml's libs aren't monadic enough)
For example f# is excellent in all of the above, but is _challenged_ in the multi-platform aspect.
OCaml's standard library is limited, but this is compensated with Opam. Considering OCaml on windows is simply looking for trouble. The OCaml compiler is good, but other tools are limited or a bit primitive (heap profilers, debuggers, performance profilers). The community is rather reserved, but very helpful.
Haskell standard library is also limited (for example you ain't gonna jump far with the string implementation that's offered by Prelude, and Num is also warted). The toolchain is better than OCaml's. Also Cabal has libs for everything, but ymmv. The community is really gentle and eager to help.
ML, sorry no experience, most other flavours seem dead or quiet. MLton is a really interesting compiler.