展开全部

主编推荐语

Clojure快速入门指南,全面涵盖各种实用特性。

内容简介

Clojure是用于JVM的一种现代化Lisp语言,具有你所期待的优势:高阶类函数、宏、清晰的Lisp编程风格。它支持函数式编程,对并发编程和创建领域特定语言来说非常理想。Clojure可以解决更困难的问题,做出更快的更改,终得到更小的代码库。因此,Clojure有许多成功案例是毫不奇怪的。

本书第2版做了大量修订和更新,涵盖Clojure 1.6的新特性。本书从抽象的理论到实际案例,对Clojure语言进行了全面、系统阐释。首先,你将了解Clojure作为通用语言的使用方法。接着,你将探索Clojure高效的并发模型,这种模型基于软件事务内存(STM)的数据库概念。通过在JVM上运行的Clojure DSL,效率将提高到一个新的水平。在阅读本书的过程中,你还将学习编写更小、更安全、更快速代码的无数技巧和技术。

目录

  • 版权信息
  • 译者序
  • 第1版赞誉
  • 第2版序言
  • 第1版序言
  • 关于本书
  • 致谢
  • 第1章 Clojure简介
  • 1.1 Clojure的概念以及采用的原因
  • 1.1.1 Clojure:现代化的Lisp语言
  • 1.1.2 Clojure:务实的函数式编程
  • 1.1.3 JVM之上的Clojure
  • 1.2 语言基础知识
  • 1.2.1 Lisp语法
  • 1.2.2 括号
  • 1.3 宿主互操作性:JVM速成教程
  • 1.3.1 Java类型、类和对象
  • 1.3.2 点(.)和new运算符
  • 1.3.3 线程和并发性
  • 1.4 小结
  • 第2章 Clojure要素:数据结构和函数
  • 2.1 在REPL上编码
  • 2.1.1 Clojure REPL
  • 2.1.2 “Hello,world!”
  • 2.1.3 用doc、find-doc和apropos查找文档
  • 2.1.4 Clojure语法的另外几个要点
  • 2.2 Clojure数据结构
  • 2.2.1 nil、真值和假值
  • 2.2.2 字符和字符串
  • 2.2.3 Clojure数值
  • 2.2.4 符号和关键字
  • 2.2.5 列表
  • 2.2.6 向量
  • 2.2.7 映射
  • 2.2.8 序列
  • 2.3 程序结构
  • 2.3.1 函数
  • 2.3.2 let形式
  • 2.3.3 do的副作用
  • 2.3.4 读取器宏
  • 2.4 程序流程
  • 2.4.1 条件
  • 2.4.2 逻辑函数
  • 2.4.3 函数式循环
  • 2.4.4 串行宏
  • 2.5 小结
  • 第3章 Clojure构件
  • 3.1 元数据
  • 3.1.1 Java类型提示
  • 3.1.2 Java原始类型和数组类型
  • 3.2 Java异常:try和throw
  • 3.3 函数
  • 3.3.1 定义函数
  • 3.3.2 调用函数
  • 3.3.3 高阶函数
  • 3.3.4 编写高阶函数
  • 3.3.5 匿名函数
  • 3.3.6 关键字和符号
  • 3.4 作用域
  • 3.4.1 变量和绑定
  • 3.4.2 重温let形式
  • 3.4.3 词法闭包
  • 3.5 命名空间
  • 3.5.1 ns宏
  • 3.5.2 使用命名空间
  • 3.6 解构
  • 3.6.1 向量绑定
  • 3.6.2 映射绑定
  • 3.7 读取器字面量
  • 3.8 小结
  • 第4章 多重方法多态
  • 4.1 多态及其类型
  • 4.1.1 参数化多态
  • 4.1.2 随意多态
  • 4.1.3 子类多态
  • 4.2 用多重方法实现多态
  • 4.2.1 不使用多重方法时的情况
  • 4.2.2 使用多重方法实现随意多态
  • 4.2.3 多分派
  • 4.2.4 使用多重方法实现子类多态
  • 4.3 小结
  • 第5章 探索Clojure和Java互操作
  • 5.1 从Clojure中调用Java
  • 5.1.1 将Java类导入Clojure
  • 5.1.2 创建实例
  • 5.1.3 访问方法和域
  • 5.1.4 宏和句点特殊形式
  • 5.1.5 有助于使用Java的Clojure宏
  • 5.1.6 实现接口和扩展类
  • 5.2 将Clojure代码编译为Java字节码
  • 5.2.1 示例:两个计算器的故事
  • 5.2.2 用gen-class和gen-interface创建Java类和接口
  • 5.3 从Java调用Clojure
  • 5.4 小结
  • 第6章 状态和并发的世界
  • 6.1 状态存在的问题
  • 6.1.1 共享状态的常见问题
  • 6.1.2 传统解决方案
  • 6.2 标识与值的分离
  • 6.2.1 不可变值
  • 6.2.2 对象和时间
  • 6.2.3 不可变性和并发性
  • 6.3 Clojure的方法
  • 6.3.1 不可变性与性能
  • 6.3.2 托管引用
  • 6.4 引用
  • 6.4.1 创建引用
  • 6.4.2 引用突变
  • 6.4.3 软件事务内存
  • 6.5 代理
  • 6.5.1 创建代理
  • 6.5.2 代理突变
  • 6.5.3 使用代理
  • 6.5.4 STM事务中的副作用
  • 6.6 原子
  • 6.6.1 创建原子
  • 6.6.2 原子突变
  • 6.7 变量
  • 6.7.1 创建变量和根绑定
  • 6.7.2 变量绑定
  • 6.8 状态及其统一访问模型
  • 6.8.1 创建
  • 6.8.2 读取
  • 6.8.3 突变
  • 6.8.4 事务
  • 6.8.5 监视突变
  • 6.9 决定使用哪种托管引用类别
  • 6.10 future和promise
  • 6.10.1 future
  • 6.10.2 promise
  • 6.11 小结
  • 第7章 通过宏发展Clojure
  • 7.1 宏的基础知识
  • 7.1.1 文本替换
  • 7.1.2 unless示例
  • 7.1.3 宏模板
  • 7.1.4 回顾:为什么使用宏
  • 7.2 Clojure内部的宏
  • 7.2.1 comment
  • 7.2.2 declare
  • 7.2.3 defonce
  • 7.2.4 and
  • 7.2.5 time
  • 7.3 编写自己的宏
  • 7.3.1 infix
  • 7.3.2 randomly
  • 7.3.3 defwebmethod
  • 7.3.4 defnn
  • 7.3.5 assert-true
  • 7.4 小结
  • 第8章 函数式编程深入研究
  • 8.1 使用高阶函数
  • 8.1.1 收集函数结果
  • 8.1.2 对一系列事物进行归纳
  • 8.1.3 过滤一系列事物
  • 8.2 部分应用
  • 8.2.1 函数适配
  • 8.2.2 定义函数
  • 8.3 闭包
  • 8.3.1 自由变量与闭包
  • 8.3.2 延迟计算与闭包
  • 8.3.3 闭包与对象
  • 8.3.4 一个Clojure对象系统
  • 8.4 小结
  • 第9章 协议、记录和类型
  • 9.1 表达式问题
  • 9.1.1 建立示例场景
  • 9.1.2 对表达式问题的仔细观察和一些潜在的解决方案
  • 9.1.3 Clojure多重方法解决方案
  • 9.2 研究表达式问题的运算端
  • 9.2.1 def-modus-operandi
  • 9.2.2 detail-modus-operandi
  • 9.2.3 跟踪你的操作方法
  • 9.2.4 解决方案的错误处理和故障点
  • 9.3 用协议研究表达式问题的数据类型方面
  • 9.3.1 defprotocol与extend-protocol
  • 9.3.2 用defrecord、deftype和reify定义数据类型
  • 9.4 小结
  • 第10章 测试驱动开发及其他
  • 10.1 TDD入门:操纵字符串中的日期
  • 10.1.1 第一个断言
  • 10.1.2 month-from和year-from
  • 10.1.3 as-string
  • 10.1.4 递增和递减
  • 10.1.5 无情地重构
  • 10.2 通过模拟和打桩改善测试
  • 10.2.1 示例:费用查找器
  • 10.2.2 打桩
  • 10.2.3 模拟
  • 10.2.4 模拟与桩的对比
  • 10.2.5 管理打桩和模拟状态
  • 10.3 组织测试
  • 10.3.1 testing宏
  • 10.3.2 are宏
  • 10.4 小结
  • 第11章 更多的宏和DSL
  • 11.1 对宏的快速回顾
  • 11.2 指代宏
  • 11.2.1 指代式if
  • 11.2.2 thread-it宏
  • 11.3 将计算转移到编译时
  • 11.3.1 示例:不使用宏的循环加密
  • 11.3.2 让编译器更努力地工作
  • 11.4 生成宏的宏
  • 11.4.1 示例模板
  • 11.4.2 实现make-synonym
  • 11.4.3 使用宏生成宏的原因
  • 11.5 领域特定语言
  • 11.5.1 DSL驱动设计
  • 11.5.2 用户分类
  • 11.6 小结
  • 附录A 安装Clojure
  • A.1 Try Clojure
  • A.2 Clojure.jar
  • A.3 Leiningen
  • 结语
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。