『壹』 函數式編程有什麼弊端
我接觸過Haskell、Clojure和其他語言,也做過PL的「研究」。可以淺談一下:
函數的復雜度
分析Haskell程序的時間和空間復雜度是很麻煩的。首先編寫Haskell程序往往是很多「重用」內置/自定義數據結構,以實現數據持久性(或「不變性」)可以增加空間和時間消耗(實現策略有很多,但採取臨時解決方案不影響永久治癒),優點是控制副作用。然後,函數組合和高階函數可能代價昂貴,可以生成額外的中間數據。其優點是抽象能力強,模塊化是有益的。最後,惰性評價使過程評價模型復雜,濫用可導致效率的降低。功能語言的分析工具也較少。
但是這些提供了細粒度的模塊化,程序員需要更多的「設計」。「使用函數式編程的程序員必須努力確保程序使用更小、更簡單、更通用的模塊,」Huges說。這是一個挑戰。
而且,模塊之間的交互也是一個問題。