Vấn đề với lập trình chức năng không phải là lập trình chức năng - hầu hết những người thực hiện nó và (tệ hơn) hầu hết những người thiết kế ngôn ngữ để thực hiện nó.
Vấn đề bắt nguồn từ thực tế là mặc dù rất thông minh (đôi khi hết sức thông minh) nhưng có quá nhiều người chỉ hơi quá cuồng tín về sự thuần khiết, hoàn hảo và thực thi quan điểm của họ (thường khá hẹp) về thế giới và lập trình lên ngôn ngữ và mọi người sử dụng nó.
Một trong những kết quả là một sự thất bại để thỏa hiệp. Điều này dẫn (trong số những thứ khác) đến khoảng 10.000 ngôn ngữ và phương ngữ đủ khác nhau để gây khó chịu nhưng chỉ hiếm khi đủ khác nhau để một người có lợi thế thực sự đáng kể so với các ngôn ngữ khác. Nhiều người cũng nhìn vào thế giới thực và quyết định rằng vì nó không phù hợp với mô hình chức năng rất tốt, về cơ bản, nó chỉ sai và tốt nhất là bỏ qua.
Việc không thể thỏa hiệp cũng đã dẫn đến khá nhiều ngôn ngữ hoàn toàn đẹp cho một loại vấn đề cụ thể (hoặc một vài loại vấn đề cụ thể) nhưng thực sự hút rất nhiều ngôn ngữ khác. Một số trong đó có thể là do chính mô hình chức năng gây ra, nhưng dường như nhiều hơn (ít nhất là đối với tôi) được gây ra bởi loại tính cách cơ bản thu hút khu vực này để bắt đầu.
Điều đó dẫn đến một số vấn đề. Trước hết, học "lập trình chức năng" chủ yếu có giá trị triết học. Với hầu hết các loại ngôn ngữ khác, việc biết một ngôn ngữ của một thể loại cụ thể sẽ giúp ích rất nhiều trong việc học ngôn ngữ khác. Nếu dự án của tôi sử dụng ngôn ngữ XI thường có thể thuê một người biết ngôn ngữ Y (nhưng không phải X) khá an toàn. Với các ngôn ngữ chức năng, điều đó ít đúng hơn nhiều. Bạn có thể biết Erlang khá rõ, nhưng vẫn thấy các đơn vị Haskell hoàn toàn xa lạ và không thể hiểu được.
Kết hợp số lượng ngôn ngữ với khả năng di chuyển hạn chế giữa chúng và bạn gặp phải một tình huống xấu: gần như không thể có một ngôn ngữ hoặc phương ngữ để tạo thành "khối quan trọng" cần thiết để sử dụng hợp lý. Đó là chậm thay đổi, nhưng nó vẫn còn rất nhiều như Linux trở thành hệ điều hành máy tính để bàn chiếm ưu thế - mỗi năm, người ta đưa ra để thuyết phục lập luận rằng cuối cùng này sẽ là các năm - và cũng giống như những người đã dự đoán rằng mỗi năm nay đã nhiều năm rồi, họ sẽ lại sai. Điều đó không có nghĩa là điều đó (một trong hai) không bao giờ xảy ra - chỉ là những người nhìn vào dự đoán và nghĩ rằng "không, không phải trong năm nay" là những người đúng cho đến nay.