Recs.
Updated
SpecsUpdate
Pros
Pro Compiles to JVM bytecode, making applications written in Scala cross-platform
Aside from Java itself, Scala is by far the most popular of the many JVM languages. If you're developing for Android, or a similar JVM-only platform, or otherwise need out-of-the-box cross-platform compatibility, but the performance of a compiled language, Scala is the way to go.
Pro Supports both Functional and OOP paradigms
Scala supports both Functional and Object Oriented styles of programming. Beginners can learn both paradigms without having to learn a new language, and experts can switch between the two according to what best suits their needs at the time.
Pro Expressive functional programming abstraction for reusable and safe code
Cons
Con All the object-oriented constructs distract from learning functional programming concepts
It's not a "functional only" or even a "functional first" language. It 's very heavily object-oriented and all the functional concepts are implemented via OOP constructs or have to be implemented by the programming via those OOP construct (patterns). This makes it way more confusing to learn the functional programming concepts.