函數式編程的本質
函數式編程中的函數這個術語不是指計算機中的函數(實際上是Subroutine),而是指數學中的函數,即自變量的映射。也就是說一個函數的值僅決定於函數參數的值,不依賴其他狀態。比如sqrt(x)函數計算x的平方根,只要x不變,不論什麼時候調用,調用幾次,值都是不變的。
在函數式語言中,函數作爲一等公民,可以在任何地方定義,在函數內或函數外,可以作爲函數的參數和返回值,可以對函數進行組合。
function makeEnscapeHandler(func, preprocess)
return function(num)
num = preprocess(num)
func(num)
end
end
local function plusOneFunc(num)
return num+1
end
local printPlusOne = makeEnscapeHandler(print, plusOneFunc)
printPlusOne(1)