I agree with lolatency ... I have found Scala to be a nice middle ground between something like SML (or OCaml) and Ruby. Yes, it inherits heavily from Java, but really only the good stuff.
I moved from C++ to Ruby because Ruby allowed me to prototype very, very quickly. Unfortunately, it also ultimately made me a bad programmer. Through the forced abstraction of declaration and definition, closed classes, and just the whole 'header' 'source' file paradigm, C++ made me design and code at the same time. Ruby just let me code. Therefore, I just didn't follow good software engineering practices. Also, it is very, very slow. JRuby helps, but doesn't solve all the problems. So while I got great 'coder-time' speed up using Ruby, and all the libraries available to it (the gems package is amazing), I ultimately lost time from having to start each project from scratch.
SML, on the other hand, was too strict for me. Sometimes I need a mutable object. Sometimes it just doesn't make sense to be passing everything as state. Sometimes a loop is the correct solution. Thinking 'functionally' can be very helpful, but not always the right solution, in my opinion.
Scala lets me get the best of both worlds. I can get the type correctness of a static language, and still a good amount of freedom from mutability. It has garbage collection (thanks to the jvm), and incorporates Erlang's actor paradigm. I can write my concurrent actors with non-mutable state, and even do cool stuff like <a href="http://jonasboner.com/2007/12/19/hotswap-code-using-scala-and-actors.html">hot swapping</a>. This allows me all the concurrent safety of languages like Erlang, but with all the libraries of Java. Hell, if a Java library is NOT thread safe, I can just typically wrap the methods I want into an actor and I get thread safety!
Seriously. Check out Scala. O'Reilly has a nice free e-book available <a href="http://programming-scala.labs.oreilly.com">here</a>.
I hear clojure is good too. Haven't tried it yet though.