摘要:本書主要探索函數式編程的核心思想。我們在中應用的僅僅是一套基本的函數式編程概念的子集。我稱之為輕量級函數式編程。通常來說,關于函數式編程的書籍都熱衷于拓展閱讀者的知識面,并企圖覆蓋更多的知識點。,本書統稱為函數式編程者。
原文地址:Functional-Light-JS
原文作者:Kyle Simpson - 《You-Dont-Know-JS》作者
譯者團隊(排名不分先后):阿希、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 章:函數基礎
什么是函數?
簡要的數學回顧
函數 vs 程序
函數輸入
輸入計數
隨著輸入而變化的函數
函數輸出
提前 return
未 return 的輸出
函數功能
保持作用域
句法
什么是名稱?
沒有 function 的函數
來說說 This ?
總結
第 3 章:管理函數的輸入(Inputs)
立即傳參和稍后傳參
bind(..)
將實參順序顛倒
一次傳一個
柯里化和偏應用有什么用?
如何柯里化多個實參?
反柯里化
只要一個實參
傳一個返回一個
恒定參數
擴展在參數中的妙用
參數順序的那些事兒
屬性擴展
無形參風格
總結
第 4 章:組合函數
輸出到輸入
制造機器
組合的變體
通用組合
不同的實現
重排序組合
抽象
將組合當作抽象
回顧形參
總結
第 5 章:減少副作用
什么是副作用
潛在的原因
I/O 效果
其他的錯誤
一次就好
數學中的冪等
編程中的冪等
純粹的快樂
相對的純粹
有或者無
思考上的透明
不夠透明?
純化
封閉的影響
覆蓋效果
回避影響
總結
第 6 章:值的不可變性
原始值的不可變性
從值到值
消除本地影響
重新賦值
意圖
凍結
性能
以不可變的眼光看待數據
總結
第 7 章: 閉包 vs 對象
達成共識
相像
狀態
行為,也是一樣!
(不)可變
同構
同根異枝
結構可變性
私有
狀態拷貝
性能
總結
第 8 章:列表操作
非函數式編程列表處理
映射
映射 vs 遍歷
一個詞:函子
過濾器
Reduce
Map 也是 Reduce
Filter 也是 Reduce
高級列表操作
方法 vs 獨立
查尋列表
融合
列表之外
總結
第 9 章:遞歸
定義
為什么選擇遞歸
聲明式遞歸
重構遞歸
總結
第 10 章:異步的函數式
時間狀態
積極的 vs 惰性的
響應式函數式編程
總結
第 11 章:融會貫通
準備
股票信息
股票行情界面
總結
附錄 A: Transducing
首先,為什么
如何,下一步
最后
總結
附錄 B: 謙虛的 Monad
類型
松散接口
Maybe
Humble
Humility
總結
附錄 C: 函數式編程函數庫
Ramda (0.23.0)
Lodash/fp (4.17.4)
Mori (0.3.2)
總結
關于出版本書主要在 on Leanpub 平臺上以電子版本的形式進行出版。我也嘗試出售本書的紙質版本,但沒有確定的方案。
除了購買本書以外,如果你想要對本書作一些物質上的捐贈,請在 patreon 上進行操作。本書作者感謝你的慷慨解囊。
Patreon
非常歡迎對于本書的任何內容貢獻。但是在提交 PR 之前請務必認真閱讀 Contributions Guidelines。
License & Copyright本書所有的材料和內容都歸屬 (c) 2016-2017 Kyle Simpson 所有。
本書根據Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License 進行授權許可.
FP,本書統稱為函數式編程。
FPer,本書統稱為函數式編程者。
P.S. 整理的好辛苦 %》——《%
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/92068.html
摘要:為了盡可能提升互通性,已經成為函數式編程庫遵循的實際標準。與輕量級函數式編程的概念相反,它以火力全開的姿態進軍的函數式編程世界。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 關于譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML 最堅實的梁柱;分享,是 CSS 里最閃耀的一瞥;總結,...
摘要:所以我覺得函數式編程領域更像學者的領域。函數式編程的原則是完善的,經過了深入的研究和審查,并且可以被驗證。函數式編程是編寫可讀代碼的最有效工具之一可能還有其他。我知道很多函數式編程編程者會認為形式主義本身有助于學習。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson - 《You-Dont-Know-JS》作者 關于譯者:這是一個流淌著滬江血液...
摘要:就像我寫書的過程一樣,每個開發者在學習函數式編程的旅程中都會經歷這個部分。類型在函數式編程中有一個巨大的興趣領域類型論,本書基本上完全遠離了該領域。在函數式編程中,像這樣涵蓋是很普遍的。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 關于譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML...
摘要:這就是積極的函數式編程。上一章翻譯連載第章遞歸下輕量級函數式編程你不知道的姊妹篇原創新書移動前端高效開發實戰已在亞馬遜京東當當開售。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 關于譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML 最堅實的梁柱;分享,是 CSS 里最閃耀的一瞥;總...
摘要:一旦我們滿足了基本條件值為,我們將不再調用遞歸函數,只是有效地執行了。遞歸深諳函數式編程之精髓,最被廣泛引證的原因是,在調用棧中,遞歸把大部分顯式狀態跟蹤換為了隱式狀態。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 關于譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML 最堅實的梁柱;...
閱讀 3311·2021-11-24 09:39
閱讀 3883·2021-11-22 09:34
閱讀 4836·2021-08-11 11:17
閱讀 1072·2019-08-29 13:58
閱讀 2589·2019-08-28 18:18
閱讀 550·2019-08-26 12:24
閱讀 838·2019-08-26 12:14
閱讀 747·2019-08-26 11:58