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 a las mónadas en la programación funcional como una forma de tratar con IO.
El principal problema con los lenguajes de programación puros, perezosos y funcionales fue la utilidad al tratar con IO. Es uno de los miembros del "Awkward Squad" en 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 todo lo relacionado con el cambio de estado, incluida la obtención de entradas y salidas del usuario o del entorno. En la programación funcional pura, todo es inmutable, para permitir pereza y pureza (sin efectos secundarios).
¿Cómo resuelven las mónadas el problema de IO? Bueno, sin discutir demasiado sobre las mónadas, básicamente toman el "Mundo" (el entorno de tiempo de ejecución) como entrada para la mónada, y producen un nuevo "Mundo" como salida, y el resultado: escriba IO a = Mundo -> (a, Mundo).
FP, por lo tanto, ha entrado cada vez más en la corriente principal, porque el mayor problema, IO (y otros) se ha resuelto. La integración en los lenguajes OO existentes también ha estado sucediendo, como saben. LINQ es mónadas, por ejemplo, de principio a fin.
Para obtener más información, recomiendo leer sobre mónadas y los documentos a los que se hace referencia en mi respuesta.