前言 1
第1部分 Clojure之旅 13
第1章 Clojure的结构 13
简单值,小步缓行 14
把你的Clojure数据放入容器 16
我们可以对列表做什么? 17
使用集合存储唯一值数据 23
列表是Clojure的心脏 26
符号及绑定的艺术 27
创建我们自己的函数 29
第2章 程序流与函数转换 34
使用逻辑控制流 35
创建函数的函数和其他优雅的表达式 45
解构 47
惰性的威力 49
递归 52
数据转换的函数式形态 55
第3章 状态与并发 62
处理现实世界的状态与并发 62
第4章 Java互操作与多态 75
跟Java的互操作 75
实用的多态 78
第5章 如何使用Clojure项目和库 88
配置一个Clojure编辑器 88
使用Leiningen创建项目 89
用Leiningen做依赖管理 95
在你自己的项目中使用库 98
第6章 使用core.async通信 102
core.async通道基础 104
core.async茶话会中的上茶 107
创建一个从命令行运行的茶话会 110
第7章 使用Clojure创建Web应用 114
使用Compojure创建一个Web服务器 114
利用ClojureScript在浏览器中使用Clojure 123
浏览器连接的REPL 128
利用ClojureScript和cljs-http做HTTP调用 130
利用ClojureScript和Enfocus做DOM控制 131
利用Enfocus做事件处理 134
对Clojure和ClojureScript的Web应用的概括 137
Web开发中其他有用的库 138
第8章 宏的威力 144
探索宏 144
创建我们自己的宏 146
使用模板来创建宏 149
第2部分 践行Clojure练习项目 155
第9章 加入Clojure社区 155
在线文档 155
使用哪个库 160
Clojure新闻 163
寻找其他Clojure程序员 164
为问题和疑问寻求帮助 165
跟其他Clojure爱好者一起创建东西 166
小结 166
第10章 每周践行Clojure训练计划 168
如何使用这个训练计划? 168
如果我耽误了一两天会怎么样? 168
如果我没法理解这个练习该怎么办? 169
第1周 169
第2周 182
第3周 187
第4周 191
第5周 197
第6周 201
第7周 204
祝贺 208
第11章 继续历险 209
迎接Transducers 209
进一步阅读 213