He notado que Java 8 tiene construcciones de programación funcional similares a las de Scala. ¿Los diseñadores de Java 8 adoptaron esto de Scala o es de otro lugar, como Haskell?

Ganó una forma de sintaxis lambda , pero eso es todo. Lambda ha estado en Lisp alrededor de 55 años y en la familia ML (de la cual Haskell es parte) por más de 30. Entonces, aunque Scala ha ofrecido lambda durante más de 10 años, realmente no importa dónde “lo obtuvieron”.

Java 8 nunca alcanzará los lenguajes de programación funcionales, a pesar de lambda , porque el lenguaje, y gran parte de su comunidad, está totalmente comprometido con la sintaxis de estilo C y el imperativo modelo Fortran / von-Neumann. Y ese modelo se invierte en complejidad y fragilidad “no esenciales” frente a muchos desafíos, como la concurrencia.

Además, no ha abarcado las características del sistema de tipos (como las clases de tipos) que permiten implementaciones reutilizables de principios, incluso de los tipos funcionales más simples. Haskell y Scala lo hacen mucho mejor.