lua學習: lua及函數語言程式設計語言

iteye_3653發表於2011-09-13
無論 python, ruby, 還是 erlang, lua, 這幾個比較新銳的語言,都支援函數語言程式設計。
函數語言程式設計到底具有哪些特點? 相對於傳統的命令式語言,其優勢在什麼地方?

函數語言程式設計,有如下幾個特點:

1、 函式是第一型別。
函式像其它資料型別一樣,可以被賦值,可以當做引數,也可以當做函式的返回值。

其實, C語言的函式,實質就是一種指標型別,因此我們可以說,C語言也是支援函數語言程式設計的。

2、 函式的執行結果,只與傳入的引數相關。
也就是說,只要傳入的引數不變,那麼函式的執行結果就是一定的,而不受其它條件影響。
這就要求我們,在函式內部,不要訪問全域性變數。

這點實質上是函數語言程式設計的核心。

這個用術語表示,叫做“引用透明性”

3、 變數一旦被賦值,就永遠不可修改。
C 語言如何表示?

4、 惰性計算
將一個函式繫結到一個變數的時候,並不立刻計算; 而是在使用的時候才去計算。

5、 閉包
在其它函式內部定義的函式

6、 高階函式
使用其它函式作為引數的函式,稱為高階函式

7、 匿名函式 lambda

相關文章