全本 | iKcamp翻译 | 《JavaScript 轻量级函数式编程》|《你不知道的JS》姊妹篇
原文地址:Functional-Light-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 上进行操作。本书作者感谢你的慷慨解囊。
Contributions
非常欢迎对于本书的任何内容贡献。但是在提交 PR 之前请务必认真阅读 Contributions Guidelines。
License & Copyright
本书所有的材料和内容都归属 (c) 2016-2017 Kyle Simpson 所有。
本书根据Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License 进行授权许可.
FP,本书统称为函数式编程。
FPer,本书统称为函数式编程者。

P.S. 整理的好辛苦 %》——《%
全本 | iKcamp翻译 | 《JavaScript 轻量级函数式编程》|《你不知道的JS》姊妹篇的更多相关文章
- 翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 引言&前言
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 译者团队(排名不分先后):阿希.blueken.brucec ...
- 翻译连载 | 第 10 章:异步的函数式(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 附录 B: 谦虚的 Monad-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 附录 C:函数式编程函数库-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
随机推荐
- (function($){...})(jQuery)和$(document).ready(function(){}) 的区别
(function($){...})(jQuery) 实际上是执行()(para)匿名函数,只不过是传递了jQuery对象. 立即执行函数:相当于先申明一个函数,声明完后直接调用: 用于存放开发 ...
- uploadify 配置后,页面显示无效果
uploadify使用的是Flash版本 谷歌浏览器:默认没有开启Flash,进行如下图设置即可
- Best MVC Practices(最优的MVC布局)
Best MVC Practices 最优的MVC布局策略 Model View Controller 1.数据层 2.视图层 3.控制器层 Although Model-View-Controlle ...
- GPU的线程模型和内存模型
遇见C++ AMP:在GPU上做并行计算 Written by Allen Lee I see all the young believers, your target audience. I see ...
- 楼梯T-SQL:超越基础6级:使用CASE表达式和IIF函数
从他的楼梯到T-SQL DML,Gregory Larsen涵盖了更多的高级方面的T-SQL语言,如子查询. 有时您需要编写一个可以根据另一个表达式的评估返回不同的TSQL表达式的单个TSQL语句. ...
- 不怕你配置不对,就怕你看的资料不对!MIM 与 SharePoint 同步完全配置指南。
为了更好的同步 User Profile,在 SharePoint 2010 中首次引入了 FIM (ForeFront Identity Manager) 用于编辑 User Profile 的同期 ...
- 享受Python和PHP动态类型检查语言的快感
前言 写这文章的时候特地查了资料,以确保我没有说错关于Python和PHP的类型机制. 所以这里放一张图,关于强弱类型与动态/静态类型检查的区分 从分类上看,PHP属于弱类型语言,而Python属于强 ...
- CopyOnWriteArrayList并发容器
CopyOnWriteArrayList并发容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才 ...
- SQL系统函数的使用(实验五)
SQL系统函数的使用(试验5) 函数在查询语句中的使用 查询员工的姓名和日工资(保留1位小数): 查询并显示部门号为01和02的所有员工的姓名首字及岗位: 查询并显示所有员工的姓名及工龄: 查询199 ...
- Django中ORM表的创建以及基本增删改查
Django作为重量级的Python web框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象.因此用ORM来操作数据库相当快捷.今天 ...