El problema con la programación funcional no es la programación funcional en sí misma: son la mayoría de las personas que lo hacen y (peor) la mayoría de las personas que diseñan lenguajes para hacerlo.
El problema surge del hecho de que, a pesar de ser muy inteligentes (a veces francamente brillantes), demasiadas personas son demasiado fanáticas acerca de la pureza, la perfección y la aplicación de su propia visión (a menudo bastante limitada) del mundo y la programación en el lenguaje y todos los que lo usan.
Uno de los resultados es la falta de compromiso. Esto lleva (entre otras cosas) a aproximadamente 10,000 idiomas y dialectos que son lo suficientemente diferentes como para molestar, pero rara vez lo suficientemente diferentes para que uno tenga una ventaja realmente significativa sobre los demás. Muchos también miran el mundo real y deciden que, dado que no se ajusta muy bien al modelo funcional, básicamente está mal y es mejor ignorarlo.
La incapacidad para comprometerse también ha dado lugar a bastantes idiomas que son absolutamente hermosos para un tipo específico de problema (o algunos tipos específicos de problemas) pero que realmente apestan para muchos otros. Algo de eso probablemente sea causado por el modelo funcional en sí, pero parece que mucho más (al menos para mí) es causado por el tipo básico de personalidad que se siente atraído por esta área.
Eso lleva a una serie de problemas. En primer lugar, aprender "programación funcional" es principalmente de valor filosófico. Con la mayoría de los otros tipos de idiomas, conocer un idioma de un género en particular es de gran ayuda para aprender otro. Si mi proyecto usa el lenguaje XI, generalmente puedo contratar a alguien que sepa el idioma Y (pero no X) con bastante seguridad. Con lenguajes funcionales, eso es mucho menos cierto. Es posible que conozca a Erlang bastante bien, pero aún encuentre a las mónadas de Haskell completamente extrañas e incomprensibles.
Si combina la cantidad de idiomas con la portabilidad limitada del talento entre ellos, obtendrá una situación fea: es casi imposible que un idioma o dialecto forme la "masa crítica" necesaria para que tenga un uso razonablemente general. Eso está cambiando lentamente, pero todavía se parece mucho a que Linux se convierta en el sistema operativo de escritorio dominante: cada año, la gente presenta argumentos convincentes de que finalmente este será el año, y al igual que las personas que han estado prediciendo que cada año año durante décadas, se equivocarán una vez más. Eso no quiere decir que (cualquiera de los dos) nunca pueda suceder, solo que las personas que miran las predicciones y piensan "no, no este año" han sido las correctas hasta ahora.