原作: mostly-adequate-guide, thank Professor Franklin Risby for his great work!

llh911001 簡中翻譯版:JS函数式编程指南

繁體中文版由前簡中翻譯版透過 OpenCC 轉檔而來

關於本書

這本書的主題是函式典範(functional paradigm),我們將使用 JavaScript 這個世界上最流行的函數語言程式設計語言來講述這一主題。有人可能會覺得選擇 JavaScript 並不明智,因為當前的主流觀點認為它是一門命令式(imperative)的語言,並不適合用來講函數式。但我認為,這是學習函數語言程式設計的最好方式,因為:

  • 你很有可能在日常工作中使用它

    這讓你有機會在實際的程式設計過程中學以致用,而不是在空閒時間用一門深奧的函數語言程式設計語言做一些玩具性質的專案。

  • 你不必從頭學起就能開始編寫程式

    在純函數語言程式設計語言中,你必須使用 monad 才能列印變數或者讀取 DOM 節點。JavaScript 則簡單得多,可以作弊走捷徑,因為畢竟我們的目的是學寫純函數式程式碼。JavaScript 也更容易入門,因為它是一門混合典範的語言,你隨時可以在感覺吃力的時候回退到原有的程式設計習慣上去。

  • 這門語言完全有能力書寫高階的函數式程式碼

    只需藉助一到兩個微型類庫,JavaScript 就能模擬 Scala 或 Haskell 這類語言的全部特性。雖然物件導向程式設計(Object-oriented programing)主導著業界,但很明顯這種典範在 JavaScript 裡非常笨拙,用起來就像在高速公路上露營或者穿著橡膠套鞋跳踢踏舞一樣。我們不得不到處使用 bind 以免 this 不知不覺地變了,語言裡沒有類可以用(目前還沒有),我們還發明瞭各種變通方法來應對忘記呼叫 new 關鍵字後的怪異行為,私有成員只能通過閉包(closure)才能實現,等等。對大多數人來說,函數語言程式設計看起來更加自然。

以上說明,強型別的函數式語言毫無疑問將會成為本書所示範式的最佳試驗場。JavaScript 是我們學習這種典範的一種手段,將它應用於什麼地方則完全取決於你自己。幸運的是,所有的介面都是數學的,因而也是普適的。最終你會發現你習慣了 swiftz、scalaz、haskell 和 purescript,以及其他各種數學偏向的語言。

Gitbook (更好的閱讀體驗)

目錄

第 1 部分

第 2 部分

未來計劃

  • 第 1 部分是基礎知識。這是初版草稿,所以我會及時更正發現的的錯誤。歡迎提供幫助!
  • 第 2 部分講述型別類(type class),比如 functor 和 monad,最後會講到到 traversable。我希望能塞進來一些 monad transformer 相關的知識,再寫一個純函式的應用。
  • 第 3 部分將開始遊走於程式設計實踐與學院學究之間。我們將學習 comonad、f-algebra、free monad、yoneda 以及其他一些範疇學概念。

results matching ""

    No results matching ""