## 路在何方?
這篇文章僅僅涉及到函數式編程的一些皮毛。考慮到有時候星星之火可以燎原,所以如果它能給你一些幫助那就再好不過了。接下來我計劃就[范疇論](http://zh.wikipedia.org/wiki/%E8%8C%83%E7%95%B4%E8%AE%BA)、monads、函數式編程數據結構、函數式語言中的[類型系統](http://zh.wikipedia.org/wiki/%E9%A1%9E%E5%9E%8B%E7%B3%BB%E7%B5%B1)、并行函數式編程、數據庫的函數式編程以及更多的話題寫些類似的文章。如果我可以寫出(在我學習的同時)以上清單的一半,我的人生就完整了。于此同時,Google將是我們的良師益友。
## [](https://github.com/justinyhuang/Functional-Programming-For-The-Rest-of-Us-Cn/blob/master/FunctionalProgrammingForTheRestOfUs.cn.md#歡迎聯系)歡迎聯系
如果您有任何問題,評價或者建議,請發郵件到[coffeemug@gmail.com](mailto:coffeemug@gmail.com)(譯者:如果翻譯方面的問題/建議請發到[yang.huang@ymail.com](mailto:yang.huang@ymail.com):))。期待您的回復。
注:
1 當我在2005年求職時的的確確經常問別人這個問題。看著那些茫然的面孔實在是很好玩的事情。你們這些年薪30萬美金的家伙,至少應該對自己可以利用的工具有個起碼的理解嘛。
2 這是個有爭議的問題。物理學家和數學家不得不承認目前還無法確定宇宙萬物是不是都遵從可以用數學方法描述的各種法則。
3 我一直一來都很討厭在歷史課上羅列一堆枯燥無味的時間、人名、事件。對我來說歷史就是關于那些改變世界的人們活生生的故事,是他們行為背后的個人動機,是那些他們用以影響蕓蕓眾生的方法和工具。從這個角度來說,接下來的這堂歷史課是不完整的,很遺憾。只有那些非常相關的人和事會被提及。
4 在我學習函數式編程的時候,“lambda”這個術語搞得我很煩,因為我不知道它到底是什么意思。在這里lambda就是一個函數,在數學符號中用這個希臘字母只是因為它更容易寫。所以以后在談及函數式編程的時候只要你聽到lambda,把它在腦中翻譯為“函數”就可以了。
5 有意思的是不論如何Java中的字符串總是不可修改的。討論這種背叛Java的設計背后的原因會很有意思,可惜這樣會讓我們跑題的。
6 大部分函數式語言的編譯器都會盡量將迭代函數轉換為對等的循環語句。這種做法叫做[尾調用優化](http://zh.wikipedia.org/wiki/%E5%B0%BE%E8%B0%83%E7%94%A8)。
7 反之則不一定成立。盡管有時候可以證明兩段代碼是等價的,但不是在所有的情況下都可以得出這樣的結論。
8 實際上這樣做并不比棧上存儲要慢,因為在引入垃圾回收機制后,內存分配操作的時間代價僅為O(1)。