Fonksiyonel programlama sınırları, bu paradigmanın popülerleşme döneminde pek tartışılmadı. Saf fonksiyonlar, immutability, side-effect'siz kod, bunlar gerçekten değerli fikirler. Ancak her paradigma gibi fonksiyonel programlama da belirli problem sınıflarında parlar, başkalarında ise güçlükle ayakta durur. Fonksiyonel programlama sınırları en belirgin biçimde durum yönetiminde ortaya çıkar. Gerçek dünya yazılımları durumu yönetmek zorundadır: kullanıcı oturumları, veritabanı bağlantıları, G/Ç işlemleri. Saf fonksiyonel diller bu yan etkileri monadlar ve benzeri soyutlamalarla kapsar. Bu soyutlamalar güçlüdür fakat öğrenme eğrisi dikleştirir ve kod okunabilirliği bazen teorik saflık uğruna azalır. Performans açısından fonksiyonel programlama sınırları da göz ardı edilemez. Immutable veri yapıları, değişiklik yapıldığında yeni kopyalar üretir. Kalıcı veri yapıları bu maliyeti azaltır fakat ortadan kaldırmaz. Düşük seviyeli sistem programlama, gerçek zamanlı işlem veya bellek kısıtlı gömülü sistemlerde bu maliyet kabul edilemez boyuta ulaşabilir. Ekip ve organizasyonel boyut ayrı bir sorundur. Fonksiyonel programlama sınırları yalnızca teknik değil, beşeri faktörleri de kapsar. Ekipte paradigmayı özümsemiş geliştirici sayısı azdır. Kod tabanı saf fonksiyonel ilkelerle yazıldığında bakım yapacak kişi havuzu daralır. Bu durum doğrudan teknik borç üretir. Fonksiyonel programlamayı kötülemek değil; doğru bağlamda kullanmak gerekir. Veri dönüştürme pipeline'ları, paralel işlem gerektiren algoritmalar, matematiksel hesaplamalar, bunlar fonksiyonel yaklaşımın gerçekten parladığı alanlardır. Kullanıcı arayüzü, sistem yönetimi veya heterogen ekip ortamlarında başka paradigmalarla hibrit bir yaklaşım çoğu zaman daha pratik sonuç verir.