The ml style statically typed languages are very different from all of these (in good ways).
For example, in Haskell you can write code as if you're in a dynamic language without annotating all the types and yet you get all of the benefits of types. It's the best of both worlds.
Concluding that static languages suck after using java and c++ et al is a common mistake, and is understandable.