序 1
前言 3
第1章引言 9
为什么我应该使用Erlang 9
Erlang语言的历史及发展 11
Erlang的特性 12
Erlang和多核 17
案例研究 18
应该如何使用Erlang 21
第2章Erlang基础 22
整数 22
Erlang终端 23
浮点数 23
基元 25
布尔类型 27
元组 28
列表 29
项元比较 34
变量 36
复杂数据结构 38
模式匹配 40
函数 44
模块 46
练习 50
第3章Erlang顺序编程 52
条件评估 52
保护元 57
内置函数 60
递归 66
运行时错误 75
处理错误 77
模块库 84
调试器 87
练习 90
第4章并发编程 95
创建进程 96
消息传递 98
接收消息 100
注册进程 107
超时 110
性能基准测试 111
进程架构 112
尾递归和内存泄漏 113
面向并发程序设计的个案研究 115
竞争条件死锁和饥饿进程 116
进程管理器 118
练习 119
第5章进程设计模式 121
客户端/服务器模型 122
进程模式实例 128
有限状态机 130
事件管理器和句柄 134
练习 141
第6章进程错误处理机制 143
进程链接和退出信号 143
健壮性系统 152
练习 158
第7章记录和宏 161
记录 162
宏 168
练习 172
第8章软件升级 175
升级模块 175
幕后 178
升级过程 184
erlang文件 188
练习 188
第9章更多数据类型和高级别构造 190
实践中的函数式编程 190
Funs和高阶函数 191
列表解析 198
二进制类型和序列化 202
引用 211
练习 212
第10章ETS和Dets表 214
ETS表 214
Dets表 228
移动用户数据库实例 231
练习 242
第11章Erlang中的分布式编程 244
Erlang中的分布式系统 244
Erlang中的分布式计算基础 246
epmd进程 259
练习 260
第12章OTP行为包 261
OTP行为包介绍 261
通用服务器 264
监控进程 274
应用 278
版本发行的处理 284
其他行为包和更多阅读资源 287
练习 288
第13章Mnesia介绍 290
何时使用Mnesia 290
配置Mnesia 292
事务处理 296
分区网络 301
扩展阅读 302
练习 303
第14章图形用户界面编程wxErlang 305
wxWidgets 305
wxErlangwxWidgets绑定到Erlang 306
第一个实例:MicroBlog 309
MiniBlog实例 313
获取和运行wxErlang 316
练习 317
第15章套接字编程 319
用户数据报协议 319
传输控制协议 323
inet模块 328
扩展阅读 329
练习 330
第16章Erlang与其他编程语言接口 332
交互运作概况 332
与Java交互运作 334
C节点 339
Unix终端的Erlang调用:erlcall 343
端口程序 343
通信支持库 347
内联驱动程序和FFI 349
练习 350
第17章跟踪内置函数dbg跟踪器以及匹配规则 351
引言 351
跟踪内置函数 352
用tracepatte内置函数跟踪调用 358
dbg跟踪器 362
匹配规则:fun语法 370
匹配规则:螺母和螺栓 379
扩展阅读 387
练习 388
第18章类型和文档 390
Erlang中的类型 390
TypEr:成功类型和类型推断 394
使用EDoc生成文档 397
练习 405
第19章EUnit和测试驱动开发 406
测试驱动开发 406
EUnit 407
EUnit的基础架构 411
测试基于状态的系统 413
在Erlang中测试并发程序 414
练习 415
第20章风格和效率 417
应用和模块 417
进程和并发 422
格式约定 425
编码策略 431
效率 433
最后 437
附录使用Erlang 439