相信大家平時或多或少聽過不少關于“函數(shù)式編程” (FP)相關的詞語,有些Geek經(jīng)常吹捧函數(shù)式的優(yōu)點或者特性比如:純函數(shù)無副作用、不變的數(shù)據(jù)、高階函數(shù)、流計算模式、尾遞歸、柯里化等等,再加上目前的函數(shù)式理論越來越多的應用于工程中,OCaml,clojure, scala等FP語言日漸火爆。本編文章,筆者準備帶領大家深入理解函數(shù)式編程的相關理論概念。

定義

首先引用維基百科對函數(shù)式編程的解釋:在計算機科學里,函數(shù)式編程是一種編程范式,它將計算描述為表達式求值并避免了狀態(tài)和數(shù)據(jù)改變。函數(shù)式編程里面的“函數(shù)”指的是數(shù)學函數(shù),數(shù)學函數(shù)和我們平時工作中遇到的編程函數(shù)有什么區(qū)別呢?

編程函數(shù)和數(shù)學函數(shù)

seo優(yōu)化培訓,網(wǎng)絡推廣培訓,網(wǎng)絡營銷培訓,SEM培訓,網(wǎng)絡優(yōu)化,在線營銷培訓

從上圖不難發(fā)現(xiàn):數(shù)學函數(shù)的特點是對于每一個自變量,存在唯一的因變量與之對應。而編程函數(shù)的特點是參數(shù)和返回值都不是必須的,函數(shù)可能依賴外界或者影響外界。那么編程函數(shù)能否轉(zhuǎn)換成數(shù)學函數(shù),或者說我們的編程函數(shù)能否變成“純函數(shù)”?

如何轉(zhuǎn)換?

對于任何一個編程函數(shù),需要滿足下面3個條件,即可轉(zhuǎn)換成純數(shù)學函數(shù)。

  • 每個函數(shù)必須包含輸入?yún)?shù)(作為自變量)

  • 每個函數(shù)必須有返回值(作為因變量)

  • 無論何時,給定參數(shù)調(diào)用函數(shù)時,返回值必須一致。

網(wǎng)友評論