马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
 
 
 
 
×
 
 本帖最后由 yularna 于 2014-12-19 21:07 编辑  
 
《实用Common Lisp编程(Practical Common Lisp中文扫描版)》 
作者: Peter Seibel  
出版社: 人民邮电 
原作名: Practical Common Lisp 
译者: 田春  
出版年: 2011-10 
页数: 417 
  内容简介:  
由塞贝尔(Peter Seibel)编著的《实用Common Lisp编程》是一本不同寻常的Common Lisp入门书。《实用Common Lisp编程》首先从作者的学习经过及语言历史出发,随后用21个章节讲述了各种基础知识,主要包括:REPL及Common Lisp的各种实现、S-表达式、函数与变量、标准宏与自定义宏、数字与字符以及字符串、集合与向量、列表处理、文件与文件I/O处理、类、FORMAT格式、符号与包,等等。而接下来的9个章节则翔实地介绍了几个有代表性的实例,其中包含如何构建垃圾过滤器、解析二进制文件、构建ID3解析器,以及如何编写一个完整的MP3 Web应用程序等内容。最后还对一些未介绍内容加以延伸。《实用Common Lisp编程》内容适合Common Lisp初学者及对之感兴趣的相关人士。 
 
作者简介: 
 
塞贝尔(PeterSeibel)从作家演变成程序员,又从程序员演变成作家,其职业生涯可谓一波三折。他在获得英语专业学士学位后做过一段时间的记者工作,后来被Web所吸引。在20世纪90年代早期,他用Perl建立了Mother Jones杂志和Organic Online网站。他作为Web Logic的早期雇员参与了Java革命,随后又在加州大学伯克利分校教授Java编程。他也是第二代Lisp程序员之一,并曾经是Symbolics的早期股东。2003年他辞去技术工作,潜心研究Lisp,并凭借本书获得Jolt生产效率大奖。2009年出版了名噪一时的访谈录《编程人生》(Codersat Work)。  
目录: 
 
 第1章绪言:为什么是Lisp  1 1.1为什么是Lisp  2 
1.2Lisp的诞生  4 
1.3本书面向的读者  6 
第2章周而复始:REPL简介  8 
2.1选择一个Lisp实现  8 
2.2安装和运行LispinaBox  10 
2.3放开思想:交互式编程  10 
2.4体验REPL  11 
2.5Lisp风格的“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.3S-表达式  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.1WHEN和UNLESS  70 
7.2COND  71 
7.3AND、OR和NOT  72 
7.4循环  72 
7.5DOLIST和DOTIMES  73 
7.6DO  74 
7.7强大的LOOP  76 
第8章如何自定义宏   78 
8.1Mac的故事:只是一个故事  78 
8.2宏展开期和运行期  79 
8.3DEFMACRO  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其他I/O类型  154 
第15章实践:可移植路径名库  157 
15.1API  157 
15.2*FEATURES*和读取期条件化  157 
15.3列目录  159 
15.4测试文件的存在  162 
15.5遍历目录树  164 
第16章重新审视面向对象:广义函数  165 
16.1广义函数和类  166 
16.2广义函数和方法  167 
16.3DEFGENERIC  168 
16.4DEFMETHOD  169 
16.5方法组合  171 
16.6标准方法组合  172 
16.7其他方法组合  173 
16.8多重方法  174 
16.9未完待续  176 
第17章重新审视面向对象:类  177 
17.1DEFCLASS  177 
17.2槽描述符  178 
17.3对象初始化  179 
17.4访问函数  182 
17.5WITH-SLOTS和WITHACCESSORS  185 
17.6分配在类上的槽  186 
17.7槽和继承  187 
17.8多重继承  188 
17.9好的面向对象设计  190 
第18章一些FORMAT秘诀  191 
18.1FORMAT函数  192 
18.2FORMAT指令  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.1Lisp的处理方式  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.6EVAL-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.1ID3v2标签的结构  291 
25.2定义包  292 
25.3整数类型  292 
25.4字符串类型  294 
25.5ID3标签头  297 
25.6ID3帧  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.2FOO语言  376 
30.3字符转义  379 
30.4缩进打印器  380 
30.5HTML处理器接口  381 
30.6美化打印器后台  382 
30.7基本求值规则  385 
30.8下一步是什么  389 
第31章实践:HTML生成库,编译器部分  390 
31.1编译器  390 
31.2FOO特殊操作符  395 
31.3FOO宏  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 
 
 |