函式式程式設計FP

2021-10-22 04:51:00 字數 1879 閱讀 3320

純函式柯里化

函式組合

fp模組

函子either函子

io函子

函式式程式設計概念比較古老,現在大部分講的是物件導向程式設計,但是函式式程式設計也有優點

高階函式就是利用了函式可以作為引數和函式可以作為返回值的特性。常用的高階函式有 reduce、foreach、map、filter、sort等

閉包:函式和它周圍狀態的引用**到一起形成了閉包。如下

function

makefun()

}

對乙個函式保持相同的輸入能夠有相同的輸出的函式就是純函式。如 slice

函式的柯里化指的是乙個函式有多個引數時,先處理一部分引數,然後返回乙個函式處理剩餘部分引數

如果乙個函式經過多個函式處理才能得到最終值,這個時候可以吧中間部分的函式合成乙個函式

解決了洋蔥**h(g(f(x)))函式的結果依賴於上乙個函式的結果作為引數

// 原函式

let fn =h(

g(f(x)))

// 函式組合後, 預設從右向左執行,

let fn =

compose

(h, g, f)

function

compose

(...args)

, value)

// acc的初始值為value

}}

loadsh中的fp模組相對於普通模組的區別

class

container

constructor

(value)

map(fn)

}let r = container.of(

3).map

(x => x +1)

;console.

log(r)

;

maybe函子

處理值為空的情況

class

maybe

constructor

(value)

map(fn)

isnothing()

}let r = maybe.of(

3).map

(x => x +1)

;console.

log(r)

;

class

either

constructor

(value)

map(fn)

}class

container

constructor

(value)

map(fn)

}function

parsejson

(str)

catch(e

))}}

console.

log(

parsejson(''

));

該函子中的value是乙個函式,它把動作儲存到_value中,延遲處理。把該操作交給呼叫者處理。即把不純的操作交給外部處理

const fp =

require

('lodash/fp'

)class

ioconstructor

(fn)

map(fn)

}const r =io.

of(process)

.map

(p => p.execpath)

// 外部求值,有錯誤外部處理

console.

log(r.

_value()

)

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

函式式程式設計

最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...

函式式程式設計

維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...