I would suggest Scala. It's a vast, vast language and has something to offer in both the OO and functional paradigms. It also has actors (borrowed from Erlang), lazy evaluation, and a beautiful collections library. There is also an experimental macro feature in the latest version. Scala's type system is less verbose when compared to C++ and Java.
Edit: Clarify about type system.