我已经学习了足够的Common Lisp知识,可以勉强编写一个应用程序。我已经阅读了Seibel的“Practical Common Lisp”。
为了理解Common Lisp的惯用法和真谛,我应该阅读哪些库或程序?
我已经学习了足够的Common Lisp知识,可以勉强编写一个应用程序。我已经阅读了Seibel的“Practical Common Lisp”。
为了理解Common Lisp的惯用法和真谛,我应该阅读哪些库或程序?
CL-PPCRE 经常被引用作为良好的示例,这是有充分的理由的。实际上,Edi Weitz 的任何一个库都是不错的阅读材料,但 CL-PPCRE 特别聪明,是个有用而令人印象深刻的库。此外,许多 Common Lisp 实现主要是以 CL 写成的。选择通常在 CL 中实现的某些部分,并比较不同实现如何处理它,可能会非常高效。特别是,在标准中实现的一些大型有用宏系统的最佳示例之一是 Loop。如果你真的雄心勃勃,你可以比较几个 CLOS 实现。
如果您对某个计算领域特别感兴趣,值得一提,这样人们就可以根据那个领域定制推荐。
《元对象协议的艺术》是一本写得最好的代码的书。
LISP(Lisp In Small Pieces)是一本很好的书,展示了clossette(小型对象系统)和一些编译器相关的内容。毫无疑问,Norvig的书非常棒。
我也非常喜欢《构建问题求解器》,但代码有点粗糙。我不习惯在参数列表中绑定动态作用域变量。但这让尝试“预编译”区分网络变得更加有趣。这本书提供了对Norvig代码的另一种方法;我仍然认为Norvig的代码更加“整洁和清晰”(易于阅读和理解,同时还富有创意)。
《构建问题求解器》应该带有一个警告标签,例如“你需要一些阿司匹林”。当我最终“理解”rms和Sussmans的依赖性回溯时,感觉像是一道闪电击中了我的脑袋。编译pdis也很出色。非常棒。我只希望我能记住它们...
我喜欢SBCL代码。
我能提供的唯一建议就是编程。这就是我所做的。
我做了两件事情。第一,我解决了一个我熟悉的问题,一个单元测试框架,并将其扩展到包括测试套件,以便理解宏编写。
我做的第二件事是玩弄CL中的基本对象。宏,闭包和风格。
还有不要忘记从Lispers那里获取关于你的代码的反馈。