Expressive and type safety of a functional language, without the odd semantics of Haskell, where laziness can make performance difficult to predict and purity can make simple things like IO difficult to understand.
Does it still lack easy to use concurrency primitives?
I' just starting OCaml, so can't really compare, but it seems a good progress there.