a lot of the "killer value" comes
from first-class functions
Dealing with first-class functions in Scala is awkward (getting and returning functions requires juggling with generics, currying is half-baked), and if you are ready to make that compromise it can be argued that Java doesn't need first-class functions as long as it has anonymous inner classes. in statically typed functional languages,
type inference
Scala doesn't have the Hindley-Milner type inference that ML/Haskell have. It only does local type-inference, saving you from some boilerplate, but other than that it doesn't and cannot have type-inference where it is truly needed - in the declaration of functions / generic types. The entire Haskell standard library could be
rewritten, more or less, in Scala
Haskell relies a lot on type-classes for its polymorphism, which aren't really possible in Scala, and if you are going to work around that, well, the entire Haskell library could be rewritten in Java too with those workarounds, only with more boiler-plate.The question is, does Scala provide enough value to bother with its deficiencies (the type system is more complex and awkward, the generated code more inefficient especially for Android, which doesn't have the luxury of the Java SE GC).
Well, it does, but for Android at least, a version of Java that had local type inference and a lighter syntax for instantiating anonymous classes -- would have been so much better. And personally I'm not ready to commit to C++ version 2.