CHINESE

Practical Common Lisp(Chinese Translation)

Book information

Publisher
People’s Posts and Telecommunications Publishing House
Year
2011
ISBN
9787115263742
Language
chinese
Format
PDF
Filesize
8 MB (8344790 bytes)
Series
NA
Pages
421\421
Time added
2019-06-28 01:42:26

Description

目录......Page 5 Practical Common Lisp......Page 0 第1章 绪言:为什么是Lisp?......Page 16 1.1 为什么是Lisp?......Page 17 1.2 Lisp的诞生......Page 19 1.3 本书面向的读者......Page 21 2.1 选择一个Lisp实现......Page 23 2.2 安装和运行Lisp in a Box......Page 24 2.3 放开思想:交互式编程......Page 25 2.5 Lisp风格的“Hello, World”......Page 26 2.6 保存你的工作......Page 28 调试一个运行在一亿英里之外且价值一亿美元硬件上的程序是件有趣的经历。拥有一个运行在宇宙飞船上的读-求值-打印循环,在查找和修复这个问题的过程中,被证明是无价的。......Page 31 3.1 CD和记录......Page 32 3.2 录入CD......Page 33 3.3 查看数据库的内容......Page 34 3.4 改进用户交互......Page 36 3.5 保存和加载数据库......Page 38 3.6 查询数据库......Page 39 3.7 更新已有的记录——WHERE的再次使用......Page 43 3.8 消除重复,获益良多......Page 44 3.9 总结......Page 47 4.2 打开黑箱......Page 49 4.3 S-表达式......Page 50 4.4 作为Lisp形式的S-表达式......Page 53 4.6 特殊操作符......Page 54 4.7 宏......Page 55 4.8 真、假和等价......Page 56 4.9 格式化Lisp代码......Page 58 5.1 定义新函数......Page 60 5.2 函数形参列表......Page 61 5.3 可选形参......Page 62 5.4 剩余形参......Page 63 5.5 关键字形参......Page 64 5.6 混合不同的形参类型......Page 65 5.7 函数返回值......Page 66 5.8 作为数据的函数——高阶函数......Page 67 5.9 匿名函数......Page 69 6.1 变量基础......Page 71 6.2 词法变量和闭包......Page 74 6.3 动态(特殊)变量......Page 75 6.4 常量......Page 78 6.5 赋值......Page 79 6.6 广义赋值......Page 80 6.7 其他修改位置的方式......Page 81 第7章 宏:标准控制构造......Page 83 7.1 WHEN和UNLESS......Page 84 7.2 COND......Page 85 7.4 循环......Page 86 7.5 DOLIST和DOTIMES......Page 87 7.6 DO......Page 88 7.7 强大的LOOP......Page 90 8.1 Mac的故事:只是一个故事......Page 92 8.2 宏展开期和运行期......Page 93 8.3 DEFMACRO......Page 94 8.4 一个示例宏:do-primes......Page 95 8.5 宏参数......Page 96 8.6 生成展开式......Page 97 8.7 堵上漏洞......Page 99 8.8 用于编写宏的宏......Page 102 另一个经典的用于编写宏的宏:ONCE-ONLY......Page 103 8.9 超越简单宏......Page 104 9.1 两个最初的尝试......Page 105 9.2 重构......Page 106 9.3 修复返回值......Page 108 9.4 更好的结果输出......Page 109 9.6 测试层次体系......Page 111 9.7 总结......Page 113 10.1 数字......Page 115 10.2 字面数值......Page 116 10.3 初等数学......Page 118 10.5 高等数学......Page 120 10.7 字符比较......Page 121 10.8 字符串......Page 122 10.9 字符串比较......Page 123 11.1 向量......Page 125 11.3 作为序列的向量......Page 127 11.4 序列迭代函数......Page 128 11.5 高阶函数变体......Page 130 11.6 整个序列的管理......Page 131 11.8 子序列管理......Page 132 11.9 序列谓词......Page 133 11.11 哈希表......Page 134 11.12 哈希表迭代......Page 136 12.1 “没有列表”......Page 137 12.2 函数式编程和列表......Page 139 12.3 “破坏性”操作......Page 141 12.4 组合回收性函数和共享结构......Page 143 12.5 列表处理函数......Page 144 12.6 映射......Page 145 12.7 其他结构......Page 146 13.1 树......Page 147 13.2 集合......Page 148 13.3 查询表:alist和plist......Page 150 13.4 DESTRUCTURING-BIND......Page 153 14.1 读写文件数据......Page 155 14.4 文件输出......Page 157 14.5 关闭文件......Page 158 14.6 文件名......Page 159 14.7 路径名如何表示文件名......Page 160 14.8 构造新路径名......Page 162 14.10 与文件系统交互......Page 164 14.11 其他I/O类型......Page 166 15.2 *FEATURES*和读取期条件化......Page 168 15.3 列目录......Page 170 15.4 测试一个文件的存在......Page 173 15.5 遍历一个目录树......Page 174 16.1 广义函数和类......Page 176 16.2 广义函数和方法......Page 178 16.3 DEFGENERIC......Page 179 16.4 DEFMETHOD......Page 180 16.5 方法组合......Page 181 16.6 标准方法组合......Page 182 16.7 其他方法组合......Page 184 曾经使用过诸如Java和C++这些静态类型消息传递语言的程序员们可能认为多重方法听起来类似于这些语言中一种称为方法重载(method overloading)的特性。不过这两种语言特性事实上相当不同,因为重载的方法是在编译期被选择的,其所基于的是编译期的参数类型而不是运行期。为了看到方法重载的工作方式,考虑下面的两个Java类:......Page 185 如果重载的方法像Common Lisp的多重方法那样工作,那么上面将代替打印出“B/B”。在消息传递语言里有可能手工实现多重分发,但这将与消息传递模型背道而驰,因为一个多重分发的方法中的代码并不属于任何一个类。......Page 186 16.9 未完待续……......Page 187 术语“用户定义的类”不是来自语言标准的术语──从技术上来讲,当我说“用户定义的类”时我指的是那些属于24TSTANDARD-OBJECT24T的子类并且其元类(metaclass)是24TSTANDARD-CLASS24T的类。但由于我不打算谈论你可以定义不是24TSTANDARD-OBJECT24T的子类并且其元类不是24TSTANDARD-CLASS24T的那些类的方式,因此你根本不需要关心这点。“用户定义的”并不是一个用来描述这些类的完美术语,因为实现可能以相同的方式定义了特定的类。不过,将.........Page 188 17.2 槽描述符......Page 189 17.3 对象初始化......Page 190 17.4 访问函数......Page 192 17.5 WITH-SLOTS和WITH-ACCESSORS......Page 195 17.7 槽和继承......Page 197 17.8 多重继承......Page 198 17.9 好的面向对象设计......Page 200 第18章 一些FORMAT秘决......Page 202 18.2 FORMAT指令......Page 203 18.4 字符和整数指令......Page 205 18.5 浮点指令......Page 207 18.6 英语指令......Page 208 18.7 条件格式化......Page 209 18.8 迭代......Page 210 18.9 跳,跳,跳......Page 212 18.10 还有更多……......Page 213 第19章 超越异常处理:状况和再启动......Page 214 19.2 状况......Page 215 19.3 状况处理器......Page 216 24THANDLER-CASE24T是与Java或Python风格的异常处理最接近的Common Lisp相似物。你在Java中可能写成这样:......Page 217 19.4 再启动......Page 218 19.5 提供多个再启动......Page 221 19.6 状况的其他用法......Page 222 对于编写健壮的软件方面的信息,你可以从查找一本Glenford J.Meyers编写的叫做《Software Reliability》(John Wiley & Sons,1976)的书开始。Bertrand Meyer关于Design By Contract的著作也提供了一种思考软件正确性的有用方式。例如,参见他的《Object-Oriented Software Construction》(Prentice Hall,1997)一书的第11和12章。不过要记住,Bertrand Meyer是E.........Page 223 20.2 维护词法环境......Page 224 20.3 局部控制流......Page 227 20.4 从栈上回退......Page 230 20.5 多值......Page 233 20.6 EVAL-WHEN......Page 235 20.7 其他特殊操作符......Page 237 21.1 读取器是如何使用包的......Page 239 21.2 包和符号的词汇表......Page 241 21.3 三个标准包......Page 242 21.4 定义你自己的包......Page 243 21.5 打包可重用的库......Page 245 21.6 导入单独的名字......Page 246 21.7 打包技巧......Page 247 21.8 包的各种疑难杂症......Page 248 22.1 LOOP的组成部分......Page 251 22.3 计数型循环......Page 252 22.4 在集合和包上循环......Page 253 22.5 等价-然后(equals-then)迭代......Page 254 22.6 局部变量......Page 255 22.8 值汇聚......Page 256 22.9 无条件执行......Page 257 22.10 条件执行......Page 258 22.11 设置和拆除......Page 259 22.12 终止测试......Page 261 22.13 把所有东西放在一起......Page 262 23.1 垃圾过滤器的心脏......Page 263 23.2 训练过滤器......Page 266 23.3 每单词的统计......Page 268 23.4 合并概率......Page 270 23.6 训练过滤器......Page 272 23.7 测试过滤器......Page 273 23.8 一组工具函数......Page 275 23.9 分析结果......Page 276 23.10 接下来的工作......Page 278 24.1 二进制文件......Page 280 24.2 二进制格式基础......Page 281 24.3 二进制文件中的字符串......Page 282 24.4 复合结构......Page 284 24.5 设计宏......Page 285 24.6 把梦想变成现实......Page 286 24.7 读取二进制对象......Page 287 24.9 添加继承和标记的结构......Page 290 24.10 跟踪继承的槽......Page 292 24.11 带有标记的结构......Page 294 24.12 基本二进制类型......Page 296 24.13 当前对象栈......Page 298 第25章 实践:一个ID3解析器......Page 300 25.1 一个ID3v2标签的结构......Page 301 25.3 整数类型......Page 302 25.4 字符串类型......Page 304 25.5 ID3标签头......Page 307 25.6 ID3帧......Page 308 25.7 检测标签补白......Page 310 25.8 支持ID3的多个版本......Page 311 25.9 版本化的帧基础类......Page 313 25.10 版本化的具体帧类......Page 314 25.11 你实际需要哪些帧?......Page 315 25.12 文本信息帧......Page 316 25.13 评论帧......Page 318 25.14 从ID3标签中解出信息......Page 319 26.1 30秒介绍服务端Web编程......Page 324 26.2 AllegroServe......Page 326 26.3 用AllegroServe生成动态内容......Page 328 26.4 生成HTML......Page 329 26.6 查询参数......Page 332 26.7 Cookie......Page 334 26.8 一个小型应用框架......Page 335 26.9 实现......Page 336 用于你将在本章中开发的代码的包如下所示:......Page 340 其中的24T:use24T部分可以让你访问那些从第14、8和25章所定义的包中导出名字所对应的函数和宏,而24T:export24T部分导出了该库将要提供的API,你将在第29章里用到它们。......Page 341 27.2 定义一个模式......Page 342 27.3 插入值......Page 344 27.4 查询数据库......Page 346 27.5 匹配函数......Page 348 27.6 获取结果......Page 350 27.7 其他数据库操作......Page 351 28.1 Shoutcast协议......Page 353 用于你将在本章里开发的代码的包如下所示:......Page 354 28.3 实现Shoutcast......Page 356 29.1 播放列表......Page 361 由于这是一个高阶应用,因此它用到了许多底层包。它还从ACL-SOCKET包中导入了三个符号,并从MULTIPROCESSING包中导入了其余两个,这是因为它只需要这两个包中导出的5个符号而不需要其他的139个符号。......Page 362 29.2 作为歌曲源的播放列表......Page 363 29.3 操作播放列表......Page 366 29.4 查询参数类型......Page 369 29.5 样板HTML......Page 370 29.6 浏览页......Page 372 29.7 播放列表......Page 374 29.8 查找播放列表......Page 376 29.9 运行应用程序......Page 377 30.1 设计一个领域相关语言......Page 378 30.2 FOO语言......Page 379 30.3 字符转义......Page 381 由于FOO是一个底层库,因此你所开发的这个包并不依赖很多外部代码——只有通常依赖的来自26TCOMMON-LISP26T包的名字以及几乎同样经常依赖的来自26TCOM.GIGAMONKEYS.MACRO-UTILITIES26T的宏生成宏的名字。另一方面,该包需要导出所有被使用FOO的代码所需要的名字。下面是来自可从本书Web站点上下载的源代码中的26TDEFPACKAGE26T定义:......Page 382 30.4 缩进打印器......Page 383 30.5 HTML处理器接口......Page 384 30.6 美化打印器后台......Page 385 现在你可以做类似下面的事情:......Page 386 30.7 基本求值规则......Page 387 30.8 下一步是什么?......Page 391 31.1 编译器......Page 392 31.2 FOO特殊操作符......Page 396 31.3 FOO宏......Page 400 31.4 公共API......Page 403 31.5 结束语......Page 404 32.1 查找Lisp库......Page 406 32.3 让它工作,让它正确,让它更快......Page 408 32.4 分发应用程序......Page 414 32.5 何去何从......Page 417 对《Practical Common Lisp》的评价(封面)......Page 10 对《Practical Common Lisp》的评价......Page 11 关于技术审稿人......Page 12 致谢......Page 13 书评(封底)......Page 14 作者注(封底)......Page 15

Similar books