Una de las principales innovaciones en FP que ha resultado en la "explosión" de interés son las mónadas.
En enero de 1992, Philip Wadler escribió un artículo llamado La Esencia de la Programación Funcional que introdujo las mónadas en la programación funcional como una forma de lidiar con IO.
El problema principal con los lenguajes de programación puros, perezosos y funcionales fue la utilidad para tratar con IO. Es uno de los miembros del "Awkward Squad" en la programación, porque "la pereza y los efectos secundarios son, desde un punto de vista práctico, incompatibles. Si quieres usar un lenguaje perezoso, tiene que ser un lenguaje puramente funcional; "Si quieres usar efectos secundarios, es mejor que uses un lenguaje estricto". Referencia
El problema con IO antes de las mónadas era que mantener la pureza no era posible para los programas que en realidad eran útiles para cualquier cosa. Por IO, nos referimos a cualquier cosa que tenga que ver con el cambio de estado, incluida la entrada y salida del usuario o entorno. En la programación funcional pura, todo es inmutable, para permitir la pereza y la pureza (libre de efectos secundarios).
¿Cómo resuelven las mónadas el problema de IO? Bueno, sin discutir demasiado las mónadas, básicamente toman el "Mundo" (el entorno de tiempo de ejecución) como entrada a la mónada y producen un nuevo "Mundo" como resultado, y el resultado: tipo IO a = Mundo - > (un mundo).
Por lo tanto, FP ha entrado cada vez más en la corriente principal, porque el mayor problema, IO (y otros) se ha resuelto. La integración en lenguajes OO existentes también ha estado ocurriendo, como ustedes saben. LINQ es mónadas, por ejemplo, a través y por medio.
Para obtener más información, recomiendo leer sobre las mónadas y los documentos a los que se hace referencia en mi respuesta.