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 i linguaggi in cui farlo.
Il problema deriva dal fatto che, nonostante siano molto intelligenti (a volte decisamente geniali), troppe persone sono solo un po 'troppo fanatiche riguardo la purezza, la perfezione e l'applicazione della propria visione (spesso piuttosto ristretta) del mondo e programmando sulla lingua e su chiunque lo usi.
Uno dei risultati è un fallimento nel compromesso. Ciò porta (tra le altre cose) a circa 10.000 lingue e dialetti che sono abbastanza diversi da infastidire, ma solo raramente abbastanza diversi da consentire ad uno di avere un vantaggio veramente significativo rispetto agli altri. Molti guardano anche al mondo reale e decidono che, poiché non si adatta molto bene al modello funzionale, è fondamentalmente sbagliato e ignorato.
L'incapacità di scendere a compromessi ha portato anche ad alcuni linguaggi che sono assolutamente belli per un tipo specifico di problema (o alcuni tipi specifici di problemi) ma in realtà suck per molti altri. Alcuni di questi sono probabilmente causati dal modello funzionale stesso, ma molto più sembra (almeno per me) causato dal tipo di personalità di base che è attratto da quest'area per cominciare.
Questo porta a una serie di problemi. Prima di tutto, l'apprendimento della "programmazione funzionale" è per lo più di valore filosofico. Con la maggior parte degli altri tipi di linguaggi, conoscere una lingua di un particolare genere è di grande aiuto per impararne un'altra. Se il mio progetto utilizza la lingua X, di solito posso assumere qualcuno che conosce la lingua Y (ma non X) in modo abbastanza sicuro. Con i linguaggi funzionali, è molto meno vero. Potresti conoscere Erlang abbastanza bene, ma troverai le monadi Haskell completamente estranee e incomprensibili.
Accoppia il numero di lingue con la limitata portabilità del talento tra di loro e ottieni una brutta situazione: è quasi impossibile che una lingua o un dialetto formino la "massa critica" necessaria per farne un uso ragionevolmente generale. Questo sta lentamente cambiando, ma è ancora molto simile a Linux che diventa il sistema operativo desktop dominante - ogni anno le persone escogitano argomenti convincenti che finalmente questo sarà l'anno - e proprio come le persone che lo hanno predetto ogni anno ormai da decenni, si sbagliano ancora una volta. Questo non vuol dire che (nessuno 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.