《实用Common Lisp编程》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)塞贝尔著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2011
  • ISBN:7115263742
  • 页数:417 页
图书介绍:

第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.1CD和记录 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.4DESTRUCTURING-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其他1/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和WITH-ACCESSORS 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多值 23

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.1LOOP的组成部分 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.130秒介绍服务器端Web编程 315

26.2AllegroServe 317

26.3用AllegroServe生成动态内容 320

26.4生成HTML 321

26.5HTML宏 324

26.6查询参数 325

26.7cookie 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.1Shoutcast协议 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