first class element
一般而言,程序設計語言總會對計算元素的可能使用方式強加上某些限制。帶有最少限制的元素被稱爲具有第一級的狀態。第一級元素具有某些“權利或者特權”包括:
- 可以用變量命名;
- 可以提供過程作爲參數;
- 可以由過程作爲結果返回;
- 可以包含在數據結構中。
Lazy evaluation
Guava中的Iterables#filter
所謂函數式編程,就是是函數是一等公民。
Ps:個人感覺「第一級」翻譯成「第一等公民」更爲恰當。)
尾遞歸
長期以來,尾遞歸一直被看作一種編譯技巧。尾遞歸的堅實語義基礎有Carl Hewitt(1977)提供,他利用“消息傳遞”模型解釋尾遞歸。
Map&Reduce
有了一個尾遞歸的實現,我們就可以利用常規的過程調用機制表述迭代,這也會使各種複雜的專用迭代結構編程不過是一些語法糖衣了。
參考資料: