没有合适的资源?快使用搜索试试~ 我知道了~
首页《实践 Common Lisp》:面向实践程序员的 Lisp 语言指南
"《实践Common Lisp:面向工程师与艺术家的编程艺术》是由美国作者Peter Seibel所著的一本计算机编程书籍。这本书区别于传统的理论教科书,特别针对那些希望实际应用编程技巧而非仅仅理论探索的程序员设计。它强调的是工程实践和创新思维,而不是纯粹的科学方法,旨在解决实际世界中的问题,让读者在解决具体问题的过程中逐渐理解和掌握Common Lisp语言。 书中每个章节都像一个编程实战过程,引导读者从基础知识开始,逐步建立对语言的理解。作者通过实例演示,如在构建测试框架时引入宏(macros),使读者能够深入理解这个强大的特性,从而提高编程技能。Peter Seibel巧妙地融入了叙事元素,使得技术讲解更加生动易懂,超越了单纯依赖CL HyperSpec(Common Lisp的官方文档)来学习的概念性阅读。 Keith Irwin,一位Lisp程序员,高度评价了这本书,认为它不仅提供了清晰的解答,而且通过丰富的实践背景,帮助读者真正“get it”,即理解和掌握。对于那些在学习过程中遇到困难,仅仅依靠HyperSpec无法理解特定功能的读者,Practical Common Lisp成为了他们首选的参考资源,因为它以其实用性和易懂性显著优于同类教材。 《Practical Common Lisp》是一本既适合初学者通过实践解决问题,又适合有一定经验的程序员深化理解和提升技能的优秀教程。它不仅传授语言知识,还传递了如何将语言的力量运用到实际项目中的智慧,是每一位想要在Common Lisp领域有所建树的程序员不可或缺的指南。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10891733/bg10.jpg)
xvi
■CONTENTS
Designing the Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Making the Dream a Reality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Reading Binary Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Writing Binary Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Adding Inheritance and Tagged Structures. . . . . . . . . . . . . . . . . . . . . . . . 323
Keeping Track of Inherited Slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Tagged Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Primitive Binary Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
The Current Object Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
■CHAPTER 25 Practical: An ID3 Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Structure of an ID3v2 Tag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Defining a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Integer Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
String Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
ID3 Tag Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
ID3 Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Detecting Tag Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Supporting Multiple Versions of ID3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Versioned Frame Base Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Versioned Concrete Frame Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
What Frames Do You Actually Need? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Text Information Frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Comment Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Extracting Information from an ID3 Tag . . . . . . . . . . . . . . . . . . . . . . . . . . 357
■CHAPTER 26 Practical: Web Programming with AllegroServe . . . . . . . . 363
A 30-Second Intro to Server-Side Web Programming. . . . . . . . . . . . . . . 363
AllegroServe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Generating Dynamic Content with AllegroServe. . . . . . . . . . . . . . . . . . . . 368
Generating HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
HTML Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Query Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
A Small Application Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
The Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Seibel_2395Front.fm Page xvi Thursday, March 3, 2005 2:20 PM
![](https://csdnimg.cn/release/download_crawler_static/10891733/bg11.jpg)
■CONTENTS
xvii
■CHAPTER 27 Practical: An MP3 Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
The Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Defining a Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Inserting Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Querying the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Matching Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Getting at the Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Other Database Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
■CHAPTER 28 Practical: A Shoutcast Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
The Shoutcast Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Song Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Implementing Shoutcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
■CHAPTER 29 Practical: An MP3 Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Playlists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Playlists As Song Sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Manipulating the Playlist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Query Parameter Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Boilerplate HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
The Browse Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
The Playlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Finding a Playlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Running the App. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
■CHAPTER 30 Practical: An HTML Generation Library,
the Interpreter
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Designing a Domain-Specific Language. . . . . . . . . . . . . . . . . . . . . . . . . . 431
The FOO Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Character Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Indenting Printer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
HTML Processor Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
The Pretty Printer Backend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
The Basic Evaluation Rule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Seibel_2395Front.fm Page xvii Thursday, March 3, 2005 2:20 PM
![](https://csdnimg.cn/release/download_crawler_static/10891733/bg12.jpg)
xviii
■CONTENTS
■CHAPTER 31 Practical: An HTML Generation Library,
the Compiler
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
The Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
FOO Special Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
FOO Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
The Public API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
The End of the Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
■CHAPTER 32 Conclusion: What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Finding Lisp Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Interfacing with Other Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Make It Work, Make It Right, Make It Fast . . . . . . . . . . . . . . . . . . . . . . . . 467
Delivering Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Where to Go Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Seibel_2395Front.fm Page xviii Thursday, March 3, 2005 2:20 PM
![](https://csdnimg.cn/release/download_crawler_static/10891733/bg13.jpg)
xix
About the Author
■Peter Seibel is either a writer-turned-programmer or a programmer-
turned-writer. After picking up an undergraduate degree in English
and working briefly as a journalist, he was seduced by the Web. In the
early ’90s he hacked Perl for Mother Jones magazine and Organic Online.
He participated in the Java revolution as an early employee at WebLogic
and later taught Java programming at the University of California–
Berkeley Extension. He’s also one of the few second-generation Lisp
programmers on the planet and was a childhood shareholder in
Symbolics. He lives in Oakland with his wife, Lily, and their dog, Mahlanie.
Seibel_2395Front.fm Page xix Thursday, March 3, 2005 2:20 PM
![](https://csdnimg.cn/release/download_crawler_static/10891733/bg14.jpg)
Seibel_2395Front.fm Page xx Thursday, March 3, 2005 2:20 PM
剩余527页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/d3ddb2ab2acd4e6ebb772c0d5b4983f3_weixin_42712709.jpg!1)
weixin_42712709
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 中国微型数字传声器:技术革新与市场前景
- 智能安防:基于Hi3515的嵌入式云台控制系统设计
- 手机电量低时辐射真增千倍?解析手机使用谣言
- 56F803型DSP驱动的高精度大功率超声波电源控制策略研究
- ARM与GPRS结合的远程监测系统设计
- GPS与RFID技术结合的智能巡检系统设计
- CPLD驱动的低功耗爆炸场温度测试系统设计
- 基于FPGA的智能驱动控制系统:可扩展设计与工业网络协议
- 基于ATmega128和CH374的嵌入式USB接口设计
- 基于AT89C52的温度补偿超声波测距仪:高精度设计与应用
- MSP430F448单片机在交流数字电压表中的应用
- 提升变频器应用效率的12项实用技巧
- STM32F103在数字电镀电源并联均流系统中的应用
- PSpice仿真下的升压开关电源设计:拓扑分析与CCM稳定性提升
- 轻巧高效:MSP430主导的低成本无线传感器网络节点设计
- FPGA在EDA/PLD中实现LVDS接口的应用解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)