函数式编程入门:使用Elixir

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

函数式编程具有代码简洁、开发速度快、易理解、易维护、扩展性强的特点,在某些领域可以解决让命令式编程头痛的问题,具有广泛的应用场景和良好的发展前景。本书是函数式编程的零基础教程,以Elixir为例讲解函数式编程与命令式编程的区别,帮助读者掌握函数式编程的基本概念和思想(如不可变值、显式数据转换、模式匹配、递归函数、高阶函数、多态等),并避免新手常犯的错误。本书尤其适合对Elixir感兴趣且无函数式编程基础的读者入门学习。

Author(s): Ulisses Almeida 杜万[译]
Publisher: 华中科技大学出版社
Year: 2020

Language: Chinese
Pages: 204

前言
本书适合你吗
这本书里有什么
选择Elixir
安装Elixir
运行代码
在线资源
第1章 函数思想
1.1 为什么需要函数式编程
1.1.1 命令式语言的局限性
1.1.2 转向函数式编程
1.3 使用不可变数据
1.4 使用函数构建程序
1.4.1 明确地使用值
1.4.2 在参数中使用函数
1.4.3 值的转换
1.5 声明式编程
1.6 小结
第2章 使用变量和函数
2.1 表示值
2.2 执行代码并生成结果
2.2.1 创建逻辑表达式
2.3 变量值绑定
2.4 创建匿名函数
2.4.1 函数是一等公民
2.4.2 在不使用参数的情况下共享值
2.5 具名函数
2.5.1 Elixir的具名函数
2.5.2 创建模块和函数
2.5.3 导入具名函数
2.5.4 将具名函数作为值使用
2.6 结束语
2.6.1 练习
第3章 使用模式匹配控制程序流程
3.1 模式匹配
3.2 从各种数据中提取值
3.2.1 匹配部分字符串
3.2.2 匹配元组
3.2.3 匹配列表
3.2.4 匹配映射表
3.2.5 映射表与关键字列表
3.2.6 匹配结构体
3.3 用函数控制流程
3.3.1 函数的默认值
3.4 使用卫语句控制流程
3.5 Elixir的流程控制结构
3.5.1 Case:使用模式匹配进行控制
3.5.2 Cond:使用逻辑表达式进行控制
3.5.3 使用if和unless表达式
3.6 小结
第4章 运用递归
4.1 有界递归
4.1.1 遍历列表
4.1.2 转换列表
4.2 递归治理
4.2.1 减治法
4.2.2 分治法
4.3 尾调用优化
4.4 无界递归函数
4.4.1 添加界限
4.4.2 避免无限循环
4.5 递归调用匿名函数
4.6 小结
第5章 使用高阶函数
5.1 处理列表的高阶函数
5.1.1 遍历列表
5.1.2 转换列表
5.1.3 将列表归纳为一个值
5.1.4 过滤列表项
5.2 使用 Enum 模块
5.3 使用推导式
5.4 管道运算符
5.5 延迟计算
5.5.1 延迟执行函数
5.5.2 处理无限数据
5.5.3 数据流管道
5.6 小结
5.6.1 练习
第6章 设计Elixir应用程序
6.1 使用Mix创建项目
6.1.1 我们将创建什么
6.1.2 运行新任务
6.1.3 创建启动任务
6.2 设计实体的结构体
6.2.1 创建角色的结构体
6.2.2 列出英雄
6.2.3 选择一个英雄角色
6.3 使用协议创建多态函数
6.3.1 构建引用结构体的结构体
6.3.2 重构模块和复用函数
6.3.3 使用协议显示角色和动作
6.4 创建模块行为
6.4.1 使用Elixir行为创建出口
6.4.2 添加类型规范
6.4.3 战斗到底
6.5 小结
6.5.1 练习
第7章 处理非纯函数
7.1 纯函数与非纯函数
7.1.1 纯函数
7.1.2 非纯函数
7.2 控制非纯函数的流程
7.3 Try、Rescue、Catch
7.3.1 Try、Raise、Rescue
7.3.2 Try、Throw、Catch
7.4 使用错误单子处理非纯函数
7.5 使用with
7.6 小结
7.6.1 练习
7.6.2 尾声
附录1 为游戏添加房间
附录2 练习答案
A2.1 第2章练习答案
A2.2 第3章练习答案
A2.3 第4章练习答案
A2.4 第5章练习答案
参考书目
致谢
索引