摘要:本书主要探索函数式编程的核心思想。我们在中应用的仅仅是一套基本的函数式编程概念的子集。我称之为轻量级函数式编程。通常来说,关于函数式编程的书籍都热衷于拓展阅读者的知识面,并企图覆盖更多的知识点。,本书统称为函数式编程者。
原文地址: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. 整理的好辛苦 %》——《%
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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 最坚实的梁柱;...
阅读 3265·2021-11-24 09:39
阅读 3835·2021-11-22 09:34
阅读 4727·2021-08-11 11:17
阅读 1041·2019-08-29 13:58
阅读 2553·2019-08-28 18:18
阅读 522·2019-08-26 12:24
阅读 799·2019-08-26 12:14
阅读 703·2019-08-26 11:58