譯者團隊(排名不分先後):阿希、blueken、brucecham、cfanlife、dail、kyoko-df、l3ve、lilins、LittlePineapple、MatildaJin、冬青、pobusama、Cherry、蘿蔔、vavd317、vivaxy、萌萌、zhouyao
關於譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML 最堅實的樑柱;分享,是 CSS 裡最閃耀的一瞥;總結,是 JavaScript 中最嚴謹的邏輯。經過捶打磨練,成就了本書的中文版。本書包含了函數語言程式設計之精髓,希望可以幫助大家在學習函數語言程式設計的道路上走的更順暢。比心。
本書主要探索函數語言程式設計[1](FP)的核心思想。在此過程中,作者不會執著於使用大量複雜的概念來進行詮釋,這也是本書的特別之處。我們在 JavaScript 中應用的僅僅是一套基本的函數語言程式設計概念的子集。我稱之為“輕量級函數語言程式設計(FLP)”。
註釋: 題目中使用了“輕量”二字,然而這並不是一本“輕鬆的”“入門級”書籍。本書是嚴謹的,充斥著各種複雜的細節,適合擁有紮實 JS 知識基礎的閱讀者進行研讀。“輕量”意味著範圍縮小。通常來說,關於函數語言程式設計的 JavaScript 書籍都熱衷於擴充閱讀者的知識面,並企圖覆蓋更多的知識點。而本書則對於每一個話題都進行了深入的探究,儘管這種探究是小範圍進行的。
讓我們面對這個事實:除非你已經是函數語言程式設計高手中的一員(至少我不是!),否則類似“一個單子僅僅是自函子中的么半群”這類說法對我們來說毫無意義。
這並不是說,各種複雜繁瑣的概念是無意義的,更不是說,函數語言程式設計者濫用了它們。一旦你完全掌握了輕量的函數語言程式設計內容,你將會/但願會想要對函數語言程式設計的各種概念進行更正式更系統的學習,並且你一定會對它們的意義和原因有更深入的理解。
但是我更想要讓你能夠現在就把一些函數語言程式設計的基礎運用到 JavaScript 程式設計過程中去,因為我相信這會幫助你寫出更優秀的,更符合邏輯的程式碼。
更多關於本書背後的動機和各種觀點討論,請參看[前言]。
JavaScript 輕量級函數語言程式設計
目錄
- 引言 (by Brian Lonsdorf aka "Prof Frisby")
- 前言
- 第 1 章:為什麼使用函數語言程式設計?
- 第 2 章:函式基礎
- 第 3 章:管理函式的輸入(Inputs)
- 第 4 章:組合函式
- 第 5 章:減少副作用
- 第 6 章:值的不可變性
- 第 7 章: 閉包 vs 物件
- 第 8 章:列表操作
- 第 9 章:遞迴
- 第 10 章:非同步的函式式
- 第 11 章:融會貫通
- 附錄 A: Transducing
- 附錄 B: 謙虛的 Monad
- 附錄 C: 函數語言程式設計函式庫
關於出版
本書主要在 on Leanpub 平臺上以電子版本的形式進行出版。我也嘗試出售本書的紙質版本,但沒有確定的方案。
除了購買本書以外,如果你想要對本書作一些物質上的捐贈,請在 patreon 上進行操作。本書作者感謝你的慷慨解囊。
PatreonContributions
非常歡迎對於本書的任何內容貢獻。但是在提交 PR 之前請務必認真閱讀 Contributions Guidelines。
License & Copyright
本書所有的材料和內容都歸屬 (c) 2016-2017 Kyle Simpson 所有。
本書根據Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License 進行授權許可.
推薦: 翻譯專案Master的自述:
乾貨|人人都是翻譯專案的Master
P.S. 整理的好辛苦 %》——《%
iKcamp新課程推出啦~~~~~開始免費連載啦~每週2更共11堂iKcamp課|基於Koa2搭建Node.js實戰專案教學(含視訊)| 課程大綱介紹
2019年,iKcamp原創新書《Koa與Node.js開發實戰》已在京東、天貓、亞馬遜、噹噹開售啦!