Rust. It has all the good bits of functional programming but basically none of the bad bits.
Good bits:
- Strong type system (though not quite as sophisticated as Haskell or OCaml).
- Map, filter, etc.
- First class functions (though lifetimes can make this a bit awkward)
- Everything is an expression (well most things anyway).
Bad bits:
- "Point free style" and currying. IMO this is really elegant, but also makes code difficult to read very quickly. Not worth the trade-off IMO.
- No brackets/commas on function calls. Again this feels really elegant but in practice it really hurts readability.
- Global type inference. Rust requires explicit types on globals which is much much nicer.
- Custom operators. Again this is clever but unreadable.
- Small communities.
- Poor windows support (not a fundamental thing but it does seem to be an issue in practice for lots of functional languages).