《Clojure程序设计》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)哈罗威,(美)拜卓著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2013
  • ISBN:9787115308474
  • 页数:255 页
图书介绍:本书是介绍Clojure编程语言和程序设计的经典之作。第2版针对Clojure 1.3进行了全面的更新。全书共包括10章,分别介绍了Clojure概览和基本特性、序列和函数式编程、并发编程模型、协议和数据类型、宏、多重方法以及Clojure对Java的调用。最后提供了一个完整了解Clojure应用开发全过程的实例。

第1章 启航 1

1.1为什么是Clojure 2

1.1.1 Clojure非常优雅 2

1.1.2 Clojure是Lisp的再度崛起 5

1.1.3为什么是Lisp 5

1.1.4它是Lisp,但括号少了 6

1.1.5 Clojure是函数式语言 8

1.1.6 Clojure简化了并发编程 9

1.1.7 Clojure与Java虚拟机彼此亲密无间 10

1.2 Clojure编程快速入门 11

1.2.1使用REPL 12

1.2.2特殊变量 13

1.2.3添加共享状态 14

1.3探索Clojure的程序库 16

1.3.1 require和use 17

1.3.2查找文档 18

1.4小结 20

第2章 探索Clojure 21

2.1形式 21

2.1.1使用数值类型 22

2.1.2符号 24

2.1.3字符串与字符 25

2.1.4布尔值与nil 27

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调用Java 43

2.5.1访问构造函数、方法和字段 43

2.5.2 Javadoc 45

2.6流程控制 45

2.6.1分支结构与if 45

2.6.2用do引入副作用 46

2.6.3循环与loop/recur 47

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.4 Java亦可序化 71

3.4.1序化Java容器 71

3.4.2序化正则表达式 73

3.4.3序化文件系统 74

3.4.4序化流 75

3.4.5序化XML 76

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.5 FP的优势 89

4.1.6 6条规则 90

4.2怎样偷个懒 91

4.2.1尾递归 92

4.2.2自递归与recur 94

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.1 ref-set 118

5.2.2事务的属性 118

5.2.3 alter 119

5.2.4 STM的工作原理:MVCC 120

5.2.5 commute 121

5.2.6 alter优先 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回调API 132

5.6 Clojure贪吃蛇 134

5.6.1函数式模型 135

5.6.2使用STM建立可变模型 139

5.6.3贪吃蛇的GUI 140

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.3 when与when-not 172

7.3让宏更加简单 173

7.3.1语法引述、解引述和解引述拼接 175

7.3.2在宏内部创建名称 176

7.4宏的分类 178

7.4.1有条件的求值 180

7.4.2创建变量 181

7.4.3 Java互操作 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.1 Inspector 200

8.5.2 clojure.test 201

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

93性能优化 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.3 test.generative 237

10.3.1生成数据 237

10.3.2程序化验证 238

10.3.3 defspec 240

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.1 Procfile 250

10.5.2 Heroku库 250

10.5.3 Git 251

10.5.4安置你的应用 251

10.5.5部署 252

10.6小结 252

附录 编辑器 254

参考书目 255