El verdadero problema es el estado.
Los lenguajes funcionales no tienen estado global. La mayoría de los problemas industriales requieren un estado a gran escala (cómo se representa un libro mayor o un conjunto de transacciones) incluso si algunas funciones a pequeña escala no lo requieren realmente (procesamiento de un libro mayor).
Pero estamos ejecutando código en máquinas de arquitectura Von-Neuman que son inherentemente completas. Entonces, en realidad no nos hemos librado del estado, los lenguajes funcionales simplemente ocultan la complejidad del estado al desarrollador. Esto significa que el lenguaje / compilador tiene que lidiar con el estado detrás de escena y administrarlo.
Entonces, aunque los lenguajes funcionales no tienen un estado global, su información de estado se pasa como parámetros y resultado.
Entonces, la pregunta es si el lenguaje puede manejar el estado de manera eficiente detrás del sentido. Especialmente cuando el tamaño de los datos supera con creces el tamaño de la arquitectura.
Mirándolo desde el lado del hardware
El sistema operativo ha ayudado mucho en los últimos años en la visualización del espacio de direcciones para que las aplicaciones no tengan que preocuparse oficialmente. Pero las aplicaciones que no se preocupan por caer en la trampa de agotar el hardware cuando la presión de la memoria se vuelve intensa (agitar el hardware ralentizará sus procesos).
Como el programador no tiene control directo sobre el estado en el lenguaje funcional, debe confiar en el compilador para manejar esto y no he visto lenguajes funcionales que manejen esto bien.
En el lado inverso de la moneda, el programador de estado completo tiene control directo sobre el estado y, por lo tanto, puede compensar las condiciones de poca memoria. Aunque no he visto muchos programadores que sean lo suficientemente inteligentes como para hacerlo.
Mirando desde el lado de la industria:
La industria tiene muchos programadores ineficientes llenos de estado.
Pero es fácil medir las mejoras en estos programas a lo largo del tiempo. Lanzas a un equipo de desarrolladores al problema de que pueden mejorar el código al mejorar la forma en que el programa maneja el estado.
Para los programas funcionales, las mejoras son más difíciles de medir, ya que necesita mejorar las herramientas que mejorarán los programas (solo estamos viendo cómo las aplicaciones manejan el estado subyacente de manera eficiente aquí, no la mejora general del programa).
Entonces, para la industria, creo que se trata de la capacidad de medir las mejoras en el código.
Desde una perspectiva de contratación
Hay muchos programadores con estadísticas completas disponibles para contratar. Los programadores funcionales son difíciles de encontrar. Por lo tanto, su modelo básico de oferta y demanda entraría en acción si la industria cambiara a una programación de estilo funcional y eso no es algo que quieran que suceda (los programadores son lo suficientemente caros como es).