计算机书籍控

Clojure程序设计(英文)

《Clojure程序设计》是介绍Clojure的经典之作。它完全覆盖了Clojure 1.3版本提供的新特性,而且为了体现Clojure新生概念的重要意义,作者重新组织和编写了一些章节。两位作者通过《Clojure程序设计》展示了如何从头构建一个应用,帮助读者充分了解Clojure程序的完整开发流程,还帮助读者运用Clojure思想为问题的各个部分找出解决方案。
通过阅读《Clojure程序设计》,你能够学会运用Clojure的方式进行思考,充分利用这门语言的优势,快速构建强大的程序。

目录


第1章启航1
1.1为什么是Clojure2
1.1.1Clojure非常优雅2
1.1.2Clojure是Lisp的再度崛起5
1.1.3为什么是Lisp5
1.1.4它是Lisp,但括号少了6
1.1.5Clojure是函数式语言8
1.1.6Clojure简化了并发编程9
1.1.7Clojure与Java虚拟机彼此亲密无间10
1.2Clojure编程快速入门11
1.2.1使用REPL12
1.2.2特殊变量13
1.2.3添加共享状态14
1.3探索Clojure的程序库16
1.3.1require和use17
1.3.2查找文档18
1.4小结20
第2章探索Clojure21
2.1形式21
2.1.1使用数值类型22
2.1.2符号24
2.1.3字符串与字符25
2.1.4布尔值与nil27
2.1.5映射表、关键字和记录28
2.2读取器宏30
2.3函数32
2.3.1匿名函数34
2.3.2何时使用匿名函数36
2.4变量、绑定和命名空间36
2.4.1绑定37
2.4.2解构38
2.4.3命名空间40
2.5调用Java43
2.5.1访问构造函数、方法和字段43
2.5.2Javadoc45
2.6流程控制45
2.6.1分支结构与if45
2.6.2用do引入副作用46
2.6.3循环与loop/recur47
2.7我的for循环哪儿去了48
2.8元数据52
2.9小结53
第3章一切皆序列55
3.1一切皆序列56
3.2使用序列库61
3.2.1创建序列61
3.2.2过滤序列64
3.2.3序列谓词65
3.2.4序列转换66
3.3惰性和无限序列69
3.4Java亦可序化71
3.4.1序化Java容器71
3.4.2序化正则表达式73
3.4.3序化文件系统74
3.4.4序化流75
3.4.5序化XML76
3.5调用特定于结构的函数77
3.5.1列表函数77
3.5.2向量函数78
3.5.3映射表函数79
3.5.4集合函数82
3.6小结85
第4章函数式编程86
4.1函数式编程理念86
4.1.1纯函数87
4.1.2持久性数据结构87
4.1.3惰性和递归88
4.1.4引用透明性89
4.1.5FP的优势89
4.1.66条规则90
4.2怎样偷个懒91
4.2.1尾递归92
4.2.2自递归与recur94
4.2.3惰性序列95
4.2.4聊聊变现97
4.2.5丢弃头元素98
4.3懒上加懒99
4.4再议递归105
4.4.1转换为自递归106
4.4.2采用Trampolining技术107
4.4.3用惰性化替代递归109
4.4.4用快存为递归抄条近路112
4.5小结114
第5章状态115
5.1并发、并行和锁定116
5.2引用与软事务内存117
5.2.1ref—set118
5.2.2事务的属性118
5.2.3alter119
5.2.4STM的工作原理:MVCC120
5.2.5commute121
5.2.6alter优先122
5.2.7为引用添加验证123
5.3使用原子进行非协同、同步的更新124
5.4使用代理进行异步更新125
5.4.1代理的验证与错误处理126
5.4.2在事务中包含代理127
5.4.3统一的更新模型129
5.5用变量管理线程内状态129
5.5.1远距离作用131
5.5.2用于Java回调API132
5.6Clojure贪吃蛇134
5.6.1函数式模型135
5.6.2使用STM建立可变模型139
5.6.3贪吃蛇的GUI140
5.6.4没有引用的贪吃蛇143
5.7小结144
第6章协议和数据类型145
6.1针对抽象编程145
6.2接口148
6.3协议149
6.4数据类型153
6.5记录158
6.6具体化164
6.7小结165
第7章宏166
7.1何时使用宏166
7.2编写流程控制宏167
7.2.1特殊形式、设计模式和宏169
7.2.2宏展开170
7.2.3when与when—not172
7.3让宏更加简单173
7.3.1语法引述、解引述和解引述拼接175
7.3.2在宏内部创建名称176
7.4宏的分类178
7.4.1有条件的求值180
7.4.2创建变量181
7.4.3Java互操作183
7.4.4延迟求值184
7.4.5对求值进行包装184
7.4.6避免Lambda表达式186
7.5小结187
第8章多重方法188
8.1没有多重方法的日子188
8.2定义多重方法190
8.2.1调度是继承感知的192
8.2.2多重方法的默认值192
8.3调度不简单193
8.4创建特设分类法195
8.5何时应该使用多重方法199
8.5.1Inspector200
8.5.2clojure.test201
8.5.3反例202
8.6小结203
第9章极尽Java之所能204
9.1异常处理205
9.1.1保持简单的异常处理205
9.1.2清理资源206
9.1.3响应异常207
9.2与整数搏斗209
9.3性能优化210
9.3.1使用基本类型提升性能210
9.3.2添加类型提示213
9.4在Clojure中创建Java类215
9.4.1创建Java代理215
9.4.2使用Java容器217
9.5真实世界的例子220
9.5.1真正的持续循环222
9.5.2日志224
9.5.3配置226
9.6小结227
第10章搭建应用228
10.1为电码译员游戏计分229
10.2测试计分器232
10.2.1手工构造输入233
10.2.2运行测试234
10.2.3验证输出235
10.2.4回归测试236
10.3test.generative237
10.3.1生成数据237
10.3.2程序化验证238
10.3.3defspec240
10.3.4运行测试241
10.3.5规格执行失败时242
10.3.6计分函数的产生式测试243
10.4创建用户界面244
10.4.1该是时候处理状态了245
10.4.2玩家界面246
10.5部署代码249
10.5.1Procfile250
10.5.2Heroku库250
10.5.3Git251
10.5.4安置你的应用251
10.5.5部署252
10.6小结252
附录编辑器254
参考书目255

书籍下载

免费下载 密码:vm6p

正版书籍

Clojure程序设计(英文)