they cover 80% of the use-cases
No they don't, it's actually the other way around -- try recreating Rails in Scala.For that matter, give me an ORM written in Scala that's both (a) stable and consistent + (b) usable without me having to bash my head against the keyboard.
The reason why you cannot recreate a Rails clone is because Rails works basically by redefining everything at runtime, over and over again ... the whole Ruby language is built from the ground up on redefining classes (for the "class" construct, defining new classes in case they don't exist, that's just a side-effect). I'm not saying you cannot build something better in Scala (time will tell), but that something has to be a lot different and a lot more effort will be required.
Yeah, you can do "var a = 1" in Scala, that's nice.
the path forward for programming will see
a convergence between static and dynamic typing
Actually the path IMHO is a bigger separation between static and dynamic, with optional static types introduced in dynamic languages as hints for performance purposes.Basically that's because OOP is inherently incompatible with static types and because type classes are inherently incompatible with dynamic types.