I'm a partisan, of course, but I always found ocaml to be the practical choice for ML-style functional languages. All the functional type-y goodness without being shackled to it, you can let yourself off the hook if you need to, you can just write a dang loop if that's what needs doing, compiles down to native, just a good practical mix.
Other than Jane Street, nobody much uses it though, so that's that.