作者介绍:
Chas Emerick是软件公司Snowtide informatics的创始人。自2008年以来,致力于Clojure语言本身以及一些开源项目的开发;长期在cemerick.com撰写Clojure、软件开发实践、创业精神,及其他主题的文章。
Brian Carpe r是一位心理学研究领域的专业程序员,用Clojure从事数据分析与web开发。他开发过一个把Clojure代码转化为CSS代码的编译器以及一个操作关系型数据库的类库,经常在briancarper.net上发表Clojure文章。
Christophe Grand是一个独立顾问,现居法国里昂。他主要从事Clojure培训与编码,参与了Clojure语言的开发,撰写过Enlive和 Moustache类库,也是Counterclockwise——Clojure IDE for Eclipse的贡献者,经常在clj-me.cgrand.net上发表有关Clojure的文章。
译者介绍:
徐明明,阿里巴巴资深软件开发工程师,热衷于研究开源技术及语言;目前网络浏览量最大的Clojure入门教程( http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/)即译自其手;参与Twitter开源实时计算框架Storm的开发,是该项目的核心贡献者(该项目的主要语言就是Clojure), 同时也翻译了该项目的很多文档,推进了该项目在中国的应用。
第1章 进入Clojure仙境 1
为什么要选择Clojure? 1
获取Clojure 3
Clojure REPL 3
不!括号真的不会让你瞎了眼 6
表达式、操作符、语法以及优先级 7
同像性 10
Clojure Reader 12
命名空间 21
符号解析 23
特殊形式 24
小结 46
这只是开始 48
第1部分 49
第2章 函数式编程 51
所谓函数式编程,到底意味着什么? 52
谈谈值的重要性 52
作为头等公民的函数以及高阶函数 59
函数(功能)的组合 68
纯函数 76
现实生活中的函数式编程 80
第3章 集合类与数据结构 83
抽象优于实现 84
访问集合元素的简洁方式 111
数据结构的类型 115
不可变性和持久性 123
元数据 136
用Clojure的集合来小试牛刀 137
总结 159
第4章 多线程和并发 161
计算在时间和空间内的转换 162
简单的并行化 168
状态和标识 170
Clojure的引用类型 172
并发操作的分类 174
原子类型(Atom) 176
通知和约束 179
ref 182
var 200
Agent 211
使用Java的并发原语 227
总结 228
第2部分 229
第5 章 宏 231
宏到底是什么? 231
编写你的第一个宏 237
调试宏 239
语法 242
什么时候使用宏 245
宏卫生 247
宏的常见用法和模式 253
隐藏参数:&env 和 &form 255
深入 -> 和 ->> 263
总结 266
第6章 数据类型和协议 267
协议(Protocol) 268
扩展已有的类型 270
定义你自己的类型 274
实现协议 284
协议自省 293
协议函数分派的边界场景 295
自己实现一个set 296
总结 304
第7章 多重方法 305
多重方法基础 305
通往层级之路 308
层级 310
真正实现多重! 315
还有几件事 317
最后的思考 321
第3 部分 323
第8章 Clojure项目的组织与构建 325
项目布局 325
构建 339
最后的思考 355
第9章 Java及JVM互操作 357
JVM是Clojure的基础 358
Java类、方法和字段的使用 358
便利的互操作工具 361
异常与错误处理 363
为了效率进行类型提示 367
定义类、实现接口 372
在Java里使用Clojure 386
乐于合作的伙伴 393
第10章 面向REPL的编程 395
交互式开发 395
工具集 400
在REPL里调试、监测和打补丁 412
重定义结构的限制 416
小结 418
第4部分 419
第11章 数字与数学 421
Clojure的数字 421
Clojure数学 427
相等与等值 432
优化数值效率 436
用Clojure可视化芒德布罗集 448
第12章 设计模式 457
依赖注入 459
策略模式 462
责任链 463
面向方面的编程 466
最后的思考 470
第13章 测试 471
不可变值与纯函数 471
clojure.test 473
HTML DSL的成长 482
依赖断言 486
第14章 使用关系数据库 491
clojure.java.jdbc 491
Korma 498
Hibernate 503
最后的思考 510
第15章 使用非关系型数据库 511
安装CouchDB和Clutch 512
基本的CRUD操作 512
视图 513
_changes: 把CouchDB滥用做消息队列 519
可随意点选的消息队列 521
最后的思考 524
第16章 Clojure与Web 525
Clojure栈 525
基石:Ring 526
用Compojure路由请求 533
使用模板 543
最后的思考 552
第17章 布署Clojure Web应用程序 553
Java与Clojure Web架构 553
在本地运行Web应用 561
Web应用程序布署 562
超越简单Web应用程序布署 565
第5部分 567
第18章 明智地选择Clojure类型定义形式 569
第19章 在工作场所引进Clojure 573
只是事实… 573
强调生产效率 574
强调社群 576
审慎 577
第20章 下一步? 579
(dissoc Clojure ‘JVM) 579
4Clojure 580
Overtone 581
core.logic 581
Pallet 582
Avout 582
Heroku上的Clojure 583
关于作者 585
学者型的弗洛伊德情场上风采依然,缠绵的爱恋、炽热的情感、渊博的学识向人们展示了欧洲最优秀知识分子的生活与精神状态。本书所
《分布式系统常用技术及案例分析》内容简介:本书分为三大部分,即分布式系统基础理论、分布式系统常用技术以及经典的分布式系统案
基于模型的设计及其嵌入式实现 本书特色 《基于模型的设计及其嵌入式实现》特点:《基于模型的设计及其嵌入式实现》是国内**部系统介绍基于模型设计的著作,主要内容由...
《神奇的烧脑思维游戏书》内容简介:这是一本全面提升孩子学习兴趣、阅读技巧、文学知识、科学素养、审美情趣的诚意之作。本书细分
《多学科视域中的MOOC研究》内容简介:《MOOCs:理论与实践》面向人才培养实践需求,将MOOCs学习、开发、运行与管理融为一体,不仅
本书通过对一个社交网络RailsSpace开发过程的介绍,详细地展示了流行的Web应用程序开发框架RubyonRails的配置和使用方法。本书循
《逍遥游:当《庄子》遭遇现实》内容简介:中国当代思想隐士熊逸,中国思想史系列;如果你渴望洒脱自由的人生,就应该拥有这本书。
本书全面介绍了经典的和现代的网络流技术,包括综合的理论、算法与应用。主要内容包括:路径、树与周期,算法设计与分析,最大流
《北大清华人文课》内容简介:阅读经典,读者可以和无缘谋面的历史巨人或不相识的朋友进行精神的对话。本书搜集、整理了北大、清华
《软件开发的201个原则》内容简介:本书汇总了软件工程原则。这些原则是关于软件工程的基本原理、规则或假设,不管所选的技术、工具
《宋词三百首》内容简介:《宋词三百首》起初由朱祖谋编选。朱祖谋原名朱孝臧,字藿生,一字古微,一作古薇,号沤尹,又号彊村,浙
《JavaScript编程精解(原书第3版)》内容简介:本书第3版深入研究JavaScript语言,详细介绍如何编写漂亮、高效的代码。更新的内容
《程履绎传》内容简介:雨花台烈士传丛书包括《李得钊传》《骆何民传》《许金元传》《蒋云传》《张应春传》《陈履真传》《刘重民传
《英格兰大教堂》内容简介:作者在一年的时间内,考察了英格兰大大小小的教堂50余座,拍下照片上万张,写了游记几十篇,并用镜头、
《区块链金融》内容简介:毋庸置疑,“区块链金融”已经成为当下经济发展的重要势头,但是很多经济行业对区块链依然有些陌生,例如
《文化与政治》内容简介:西方马克思主义与马克思主义都诞生于西方,但是它们之间确有许多不同。西方马克思主义出现在马克思主义之
《3D游戏编程大师技巧》是游戏编程畅销书作者AndréLaMothe的扛鼎之作,从游戏编程和软件引擎的角度深入探讨了3D图形学的各个重要
《Drupal高手建站技术手册》全面、系统地介绍了当今最流行的开源内容管理系统Drupal的建站方法,不仅由浅入深地介绍了Drupal的基
LINGO 软件及应用 本书特色 本书在深入浅出地介绍LINGO基本用法和LINGO与各种文件和数据库之间的数据传递和处理方法的基础上,分两个层次介绍了LING...
《腾讯方法》内容简介:这是国内第一本深度讲述腾讯产品研发与团队转型的书。本书介绍了腾讯三个不同生命周期的产品的开发过程,包