標題 Good Morning,其實是希望本系列能為 Functional Programming 學習雲霧中透進一絲微光
會寫本系列文章,主要是因為想要學習 Functional Programming,也想對 JS 有更深入的了解,內容以探討 Kyle Simpson. Functional-Light JavaScript 一書內容為主軸,
算是邊讀邊翻譯,也算給自己做筆記,但並不是逐字翻譯,而是以原文的概念加上我自己的理解,難免會與原文失真,下方我有留資訊歡迎討論。
以下是我參考的資訊,供有興趣讀者也參考:
中譯本:JS 函数式编程指南
以生動的舉例解說各種 FP 概念,不過內文舉例非原生 JS ,有使用函式庫。
深入淺出談 Functional Programing 搭配範例。
快速查詢專有名詞的定義與簡單範例
Functional Programming Jargon
帶大家看影片認識 Kyle Simpson,以及正確的學習心態
參考影片:
Office Hours with Kyle Simpson, Author of "You Don't Know JavaScript" Book Series
對應原文第一章,學習 FP 的理由,也提到正確的學習心態
其中作者也列出參考資源,點擊查看
對應原文第二章,說明function 在 Functional Programming 的定義,以及須滿足的條件,
對應原文第三章,調整參數,使函數能互相組合
參考資料:
對應原文第四章,實際使用第三部分的技巧進行函數組合,並使用函式庫 Ramda
對應原文第五章,研究副作用、純函數的特性與好處,並且我們在減少副作用上下了很多功夫,
對應原文第六章,在 JS 中實現數據不可變性,有兩個方法: Array.slice()、Object.freeze()。但是這兩種方法都是 shallow 處理,又有存在性能的問題,這部分藉由 使用 Immutable.js 來實現。
對應原文第八章,遞迴之所以在 FP 中討論,是因為迭代方式常會需要中間值,這就是副作用,所以在流行的函數庫中都沒有迭代方法,這就是遞迴重要的原因之一
額外參考資料:
連載最後也是最重要的概念 - functor
額外參考資料:
說明何謂 Higher-order function,以及特性
因為接觸 Angular ,想了解一下 Class,於是有了這篇
連載到了今天,鐵人完賽,每天花了相當多時間翻資料、整理心得,幾度想放棄,好在跟 好想工作室 一起團報連載、一起討論,總算是完成挑戰了!
12/20 開始連續 30 天的 commit
但學習不會因此停止,如果有引起你的興趣也請點頁面上方連結,閱讀原作。So far,我們的 FP 工具箱裡的工具還不全,在未來,如果有新的研究心得,我仍會寫成文章分享。
有任何問題、技術交流、以下是連絡資訊
關於我
李柏毅 LeeBoy
前端工程師