Practical common lisp

副标题:无

作   者:(美)Peter Seibel著;田春译

分类号:

ISBN:9787115263742

微信扫一扫,移动浏览光盘

简介

《实用Common Lisp编程》是一本不同寻常的Common Lisp入门书。《实用Common Lisp编程》首先从作者的学习经过及语言历史出发,随后用21个章节讲述了各种基础知识,主要包括:REPL及Common Lisp的各种实现、S-表达式、函数与变量、标准宏与自定义宏、数字与字符以及字符串、集合与向量、列表处理、文件与文件I/O处理、类、FORMAT格式、符号与包,等等。而接下来的9个章节则翔实地介绍了几个有代表性的实例,其中包含如何构建垃圾过滤器、解析二进制文件、构建ID3解析器,以及如何编写一个完整的MP3 Web应用程序等内容。最后还对一些未介绍内容加以延伸。   《实用Common Lisp编程》内容适合Common Lisp初学者及对之感兴趣的相关人士。

目录

《实用common lisp编程》

第1 章 绪言:为什么是lisp  1

1.1 为什么是lisp  2

1.2 lisp 的诞生  4

1.3 本书面向的读者  6

第2 章 周而复始:repl 简介  8

2.1 选择一个lisp 实现  8

2.2 安装和运行lisp in a box   10

2.3 放开思想:交互式编程   10

2.4 体验repl  11

2.5 lisp 风格的“hello, world”    12

2.6 保存工作成果  13

第3 章 实践:简单的数据库  17

3.1 cd 和记录  17

3.2 录入cd  18

3.3 查看数据库的内容  19

3.4 改进用户交互  21

3.5 保存和加载数据库   23

3.6 查询数据库  24

3.7 更新已有的记录——where 再战江湖  28

.3.8 消除重复,获益良多   29

3.9 总结  33

第4 章 语法和语义  34

4.1 括号里都可以有什么  34

4.2 打开黑箱  34

4.3 s-表达式  36

4.4 作为lisp 形式的s-表达式   38

4.5 函数调用  39

4.6 特殊操作符  39

4.7 宏  41

4.8 真、假和等价  42

4.9 格式化lisp 代码   43

第5 章 函数  46

5.1 定义新函数   46

5.2 函数形参列表   47

5.3 可选形参  48

5.4 剩余形参  49

5.5 关键字形参   50

5.6 混合不同的形参类型  51

5.7 函数返回值  52

5.8 作为数据的函数——高阶函数   53

5.9 匿名函数   55

第6 章 变量   57

6.1 变量的基础知识   57

6.2 词法变量和闭包  60

6.3 动态变量   61

6.4 常量  65

6.5 赋值  65

6.6 广义赋值  66

6.7 其他修改位置的方式  67

第7 章 宏:标准控制构造  69

7.1 when 和unless   70

7.2 cond   71

7.3 and、or 和not    72

7.4 循环   72

7.5 dolist 和dotimes    73

7.6 do    74

7.7 强大的loop   76

第8 章 如何自定义宏   78

8.1 mac 的故事:只是一个故事  78

8.2 宏展开期和运行期  79

8.3 defmacro   80

8.4 示例宏:do-primes   81

8.5 宏形参   82

8.6 生成展开式  83

8.7 堵住漏洞  84

8.8 用于编写宏的宏  88

8.9 超越简单宏  90

第9 章 实践:建立单元测试框架  91

9.1 两个最初的尝试  91

9.2 重构  92

9.3 修复返回值  94

9.4 更好的结果输出  95

9.5 抽象诞生  97

9.6 测试层次体系  97

9.7 总结  99

第10 章 数字、字符和字符串  101

10.1 数字  101

10.2 字面数值  102

10.3 初等数学  104

10.4 数值比较  106

10.5 高等数学  107

10.6 字符  107

10.7 字符比较  107

10.8 字符串  108

10.9 字符串比较  109

第11 章 集合  111

11.1 向量  111

11.2 向量的子类型  113

11.3 作为序列的向量  114

11.4 序列迭代函数  114

11.5 高阶函数变体  116

11.6 整个序列上的操作  117

11.7 排序与合并  118

11.8 子序列操作  118

11.9 序列谓词  119

11.10 序列映射函数  120

11.11 哈希表  120

11.12 哈希表迭代  122

第12 章 lisp 名字的由来:列表处理  123

12.1 “没有列表”  123

12.2 函数式编程和列表  126

12.3 “破坏性”操作  127

12.4 组合回收性函数和共享结构  129

12.5 列表处理函数  131

12.6 映射  132

12.7 其他结构  133

第13 章 超越列表:点对单元的其他用法  134

13.1 树  134

13.2 集合  136

13.3 查询表:alist 和plist  137

13.4 destructuring-bind   141

第14 章 文件和文件i/o   143

14.1 读取文件数据  143

14.2 读取二进制数据  145

14.3 批量读取  145

14.4 文件输出  145

14.5 关闭文件  146

14.6 文件名  147

14.7 路径名如何表示文件名  149

14.8 构造新路径名  150

14.9 目录名的两种表示方法  152

14.10 与文件系统交互  153

14.11 其他i/o 类型  154

第15 章 实践:可移植路径名库  157

15.1 api  157

15.2 *features*和读取期条件化  157

15.3 列目录  159

15.4 测试文件的存在  162

15.5 遍历目录树  164

第16 章 重新审视面向对象:广义函数  165

16.1 广义函数和类  166

16.2 广义函数和方法  167

16.3 defgeneric  168

16.4 defmethod   169

16.5 方法组合  171

16.6 标准方法组合  172

16.7 其他方法组合  173

16.8 多重方法  174

16.9 未完待续  176

第17 章 重新审视面向对象:类  177

17.1 defclass  177

17.2 槽描述符  178

17.3 对象初始化  179

17.4 访问函数  182

17.5 with-slots 和withaccessors  185

17.6 分配在类上的槽  186

17.7 槽和继承  187

17.8 多重继承  188

17.9 好的面向对象设计  190

第18 章 一些format 秘诀  191

18.1 format 函数  192

18.2 format 指令  193

18.3 基本格式化  194

18.4 字符和整数指令  194

18.5 浮点指令  196

18.6 英语指令  197

18.7 条件格式化  198

18.8 迭代  199

18.9 跳,跳,跳  201

18.10 还有更多  202

第19 章 超越异常处理:状况和再启动  203

19.1 lisp 的处理方式  204

19.2 状况  205

19.3 状况处理器  205

19.4 再启动  207

19.5 提供多个再启动  210

19.6 状况的其他用法  211

第20 章 特殊操作符  213

20.1 控制求值  213

20.2 维护词法环境   213

20.3 局部控制流   216

20.4 从栈上回退  219

20.5 多值   223

20.6 eval-when  224

20.7 其他特殊操作符   227

第21 章 编写大型程序:包和符号   228

21.1 读取器是如何使用包的  228

21.2 包和符号相关的术语   230

21.3 三个标准包  230

21.4 定义你自己的包  232

21.5 打包可重用的库  234

21.6 导入单独的名字  235

21.7 打包技巧   236

21.8 包的各种疑难杂症   237

第22 章 高阶loop  240

22.1 loop 的组成部分   240

22.2 迭代控制  241

22.3 计数型循环  241

22.4 循环集合和包  242

22.5 等价?然后迭代  243

22.6 局部变量  244

22.7 解构变量   245

22.8 值汇聚  245

22.9 无条件执行  247

22.10 条件执行  247

22.11 设置和拆除  248

22.12 终止测试  250

22.13 小结  251

第23 章 实践:垃圾邮件过滤器   252

23.1 垃圾邮件过滤器的核心  252

23.2 训练过滤器  255

23.3 按单词来统计  257

23.4 合并概率  259

23.5 反向卡方分布函数  261

23.6 训练过滤器  262

23.7 测试过滤器  263

23.8 一组工具函数  265

23.9 分析结果  266

23.10 接下来的工作  268

第24 章 实践:解析二进制文件  269

24.1 二进制文件   269

24.2 二进制格式基础  270

24.3 二进制文件中的字符串  271

24.4 复合结构  273

24.5 设计宏  274

24.6 把梦想变成现实  275

24.7 读取二进制对象  277

24.8 写二进制对象  279

24.9 添加继承和标记的结构  280

24.10 跟踪继承的槽  281

24.11 带有标记的结构  284

24.12 基本二进制类型  285

24.13 当前对象栈  288

第25 章 实践:id3 解析器  290

25.1 id3v2 标签的结构  291

25.2 定义包  292

25.3 整数类型  292

25.4 字符串类型  294

25.5 id3 标签头  297

25.6 id3 帧  298

25.7 检测标签补白  300

25.8 支持id3 的多个版本  301

25.9 版本化的帧基础类  303

25.10 版本化的具体帧类  304

25.11 你实际需要哪些帧  305

25.12 文本信息帧  307

25.13 评论帧    309

25.14 从id3 标签中解出信息  310

第26 章 实践:用allegroserve 进行web 编程  315

26.1 30 秒介绍服务器端web 编程  315

26.2 allegroserve   317

26.3 用allegroserve 生成动态内容  320

26.4 生成html   321

26.5 html 宏  324

26.6 查询参数  325

26.7 cookie   327

26.8 小型应用框架  329

26.9 上述框架的实现  330

第27 章 实践:mp3 数据库  334

27.1 数据库  334

27.2 定义模式  336

27.3 插入值  338

27.4 查询数据库  340

27.5 匹配函数  342

27.6 获取结果  344

27.7 其他数据库操作  346

第28 章 实践:shoutcast 服务器  348

28.1 shoutcast 协议  348

28.2 歌曲源  349

28.3 实现shoutcast   351

第29 章 实践:mp3 浏览器  357

29.1 播放列表  357

29.2 作为歌曲源的播放列表  359

29.3 操作播放列表  362

29.4 查询参数类型  365

29.5 样板html   367

29.6 浏览页  368

29.7 播放列表  371

29.8 查找播放列表  373

29.9 运行应用程序  374

第30 章 实践:html 生成库,解释器部分  375

30.1 设计一个领域相关语言  375

30.2 foo 语言  376

30.3 字符转义  379

30.4 缩进打印器  380

30.5 html 处理器接口  381

30.6 美化打印器后台  382

30.7 基本求值规则  385

30.8 下一步是什么  389

第31 章 实践:html 生成库,编译器部分  390

31.1 编译器  390

31.2 foo 特殊操作符  395

31.3 foo 宏  399

31.4 公共api  401

31.5 结束语   403

第32 章 结论:下一步是什么  404

32.1 查找lisp 库  404

32.2 与其他语言接口  406

32.3 让它工作,让它正确,让它更快   406

32.4 交付应用程序   413

32.5 何去何从   415


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Practical common lisp
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon