Il problema con la programmazione funzionale non è la stessa programmazione funzionale: è la maggior parte delle persone che lo fanno e (peggio) la maggior parte delle persone che progettano linguaggi in cui farlo.
Il problema deriva dal fatto che, nonostante siano molto intelligenti (a volte addirittura geniali), troppe persone sono un po 'troppo fanatiche per la purezza, la perfezione e per applicare la propria (spesso piuttosto ristretta) visione del mondo e programmare sul lingua e tutti quelli che la usano.
Uno dei risultati è l'incapacità di scendere a compromessi. Ciò porta (tra le altre cose) a circa 10.000 lingue e dialetti che sono abbastanza diversi da infastidire, ma solo raramente abbastanza diversi perché uno abbia un vantaggio davvero significativo rispetto agli altri. Molti guardano anche al mondo reale e decidono che dal momento che non si adatta molto bene al modello funzionale, è fondamentalmente solo sbagliato e meglio ignorato.
L'incapacità di scendere a compromessi ha anche portato a parecchie lingue che sono assolutamente belle per un tipo specifico di problema (o alcuni tipi specifici di problemi) ma fanno davvero schifo per molti altri. Parte di ciò è probabilmente causata dal modello funzionale stesso, ma molto di più sembra (almeno per me) essere causato dal tipo di personalità di base che è attratto da quest'area per cominciare.
Ciò porta a una serie di problemi. Innanzitutto, l'apprendimento della "programmazione funzionale" ha principalmente un valore filosofico. Con la maggior parte degli altri tipi di lingue, conoscere una lingua di un particolare genere è di grande aiuto nell'apprendimento di un'altra. Se il mio progetto usa la lingua XI di solito posso assumere qualcuno che conosca la lingua Y (ma non X) in modo abbastanza sicuro. Con i linguaggi funzionali, è molto meno vero. Potresti conoscere Erlang abbastanza bene, ma trovare comunque monadi Haskell completamente estranei e incomprensibili.
Accoppia il numero di lingue con la limitata portabilità del talento tra loro e ottieni una brutta situazione: è quasi impossibile per una lingua o un dialetto formare la "massa critica" necessaria per renderla ragionevolmente generale. Questo sta lentamente cambiando, ma è ancora come se Linux diventasse il sistema operativo desktop dominante - ogni anno, le persone escogitano argomentazioni convincenti che alla fine questo sarà l' anno - e proprio come le persone che hanno predetto che ogni anno ormai da decenni, si sbaglieranno ancora una volta. Questo non vuol dire che (uno dei due) non può mai accadere - solo che le persone che guardano le previsioni e pensano "no, non quest'anno" sono state quelle che avevano ragione finora.