Ⅰ 函數式編程的特性
在經常被引用的論文 「Why Functional Programming Matters」(請參閱 參考資料) 中,作者 John Hughes 說明了模塊化是成功編程的關鍵,而函數編程可以極大地改進模塊化。在函數編程中,編程人員有一個天然框架用來開發更小的、更簡單的和更一般化的模塊, 然後將它們組合在一起。函數編程的一些基本特點包括:
支持閉包和高階函數,支持惰性計算(lazy evaluation)。使用遞歸作為控制流程的機制。加強了引用透明性。沒有副作用。我將重點放在在 Java 語言中使用閉包和高階函數上,但是首先對上面列出的所有特點做一個概述。 副作用是修改系統狀態的語言結構。因為 FP 語言不包含任何賦值語句,變數值一旦被指派就永遠不會改變。而且,調用函數只會計算出結果 ── 不會出現其他效果。因此,FP 語言沒有副作用 。
Ⅱ 函數式編程和反應式編程有什麼區別
函數式編程是種編程範式,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是λ演算(lambdacalculus)。而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。和過程化編程相比,函數式編程里,函數的計算可隨時調用。
Ⅲ 函數式編程有什麼弊端
我接觸過Haskell、Clojure和其他語言,也做過PL的「研究」。可以淺談一下:
函數的復雜度
分析Haskell程序的時間和空間復雜度是很麻煩的。首先編寫Haskell程序往往是很多「重用」內置/自定義數據結構,以實現數據持久性(或「不變性」)可以增加空間和時間消耗(實現策略有很多,但採取臨時解決方案不影響永久治癒),優點是控制副作用。然後,函數組合和高階函數可能代價昂貴,可以生成額外的中間數據。其優點是抽象能力強,模塊化是有益的。最後,惰性評價使過程評價模型復雜,濫用可導致效率的降低。功能語言的分析工具也較少。
但是這些提供了細粒度的模塊化,程序員需要更多的「設計」。「使用函數式編程的程序員必須努力確保程序使用更小、更簡單、更通用的模塊,」Huges說。這是一個挑戰。
而且,模塊之間的交互也是一個問題。
Ⅳ 什麼是函數響應式編程
函數響應式編程(Functional Reactive Programming:FRP)是一種和事件流有關的編程方式,其角度類似EventSoucing,關注導致狀態值改變的行為事件,一系列事件組成了事件流。
FRP是更加有效率地處理事件流,而無需顯式去管理狀態。
具體來說,FRP包括兩個核心觀點:
1.事件流,離散事件序列
2.屬性properties, 代表模型連續的值。
一系列事件是導致屬性值發生變化的原因。FRP非常類似於GOF的觀察者模式。
Ⅳ 如何用函數編程
在各門語言裡面都有許多內置函數,用到的時候需要去調用,當然也有一些函數需要自己編寫,視情況而定
Ⅵ 什麼是(函數性)反應式編程
額,這個概念我也是沒好好聽過哦!本人理解為函數式編程和響應式編程是獨立的編程方式;函數式編程是種編程典範,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是λ演算(lambdacalculus)。而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。和過程化編程相比,函數式編程里,函數的計算可隨時調用。響應式編程是一種面向數據流和變化傳播的編程範式。這意味著可以在編程語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值通過數據流進行傳播。(有點高深的樣子哦,其實沒必要糾結了,去做就行)