最近在學習 cats-effect(乙個scala的工具庫),涉及大量函式式程式設計的概念。
因此我特地簡單梳理了函式式程式設計:
在電腦科學中,函式式程式設計是一種程式設計正規化----一種構建電腦程式的結構和元素的的風格----將計算過程視為數學函式,避免改變狀態和使用可變狀態。是一種 declarative programming paradigm。符合函式式程式設計的函式是冥等的,也就是說:函式的返回值只依賴於傳入的引數的值,用相同的引數呼叫函式總是返回相同的值。和 imperative programming相反,在 imperative programming中,程式的全域性狀態能影響函式的返回值。消除 side effects, 也就是函式的輸入不影響函式的狀態。在電腦科學中,如果**乙個函式(操作,函式,或表示式)**改變的它的作用域之外的狀態變數的值,也就是說除了返回乙個值(主要影響),還有有乙個可觀測的其它影響,那麼,我們說它有side effects。side effects的例子有:改變非本地變數,改變靜態的本地變數,修改通過引用傳遞的可變引數,i/o操作,或者呼叫其它side effects函式。乙個side effects的函式的返回可能結果依賴於它的歷史呼叫,也就是說,不用時間呼叫該函式可能會返回不同的結果。
概括來說:符合函式式程式設計的函式是冥等、沒有的side effects;我們說乙個函式有side effects是指呼叫該函式可能會改變全域性狀態,該函式的呼叫次數不同結果也可能不同。
參考自維基百科functional_programming
函式式程式語言python 函式式程式設計
函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...
函式式程式設計
最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...
函式式程式設計
維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...