【问题标题】:Examples of excellent Common Lisp code?优秀的 Common Lisp 代码示例?
【发布时间】:2011-02-04 20:22:02
【问题描述】:

我已经学习了足够多的 Common Lisp,能够在编写应用程序时一头雾水。我读过 Seibel 的 Practical Common Lisp

我应该阅读哪些库或程序来理解 Common Lisp 的成语道?

【问题讨论】:

    标签: lisp common-lisp


    【解决方案1】:

    LISP(Lisp In Small Pieces)是一本简洁的书;显示 clossette(小对象系统)和 一些编译器的东西。毫无疑问,诺维格的书很棒。

    我也很喜欢“构建问题解决者”,但代码有点粗糙。我不是 用于绑定参数列表中的动态范围变量。但它带来了很多乐趣 试图“预编译”歧视网的改进。这本书给出了另一个 Norvig 的一些代码的方法;我仍然认为Norvig的代码 是很多“更整洁”的代码(更容易阅读和理解,而且仍然很有创意)。

    “建立问题解决者”应该带有一个警告标签,例如“你需要一些 渴望(sp)。感觉就像一道闪电击中了我的头,当我终于 “理解” rms 和 Sussmans 的依赖定向回溯。编译 pdis 也很精彩。优秀的东西。我只是希望我能记住这一切......

    【讨论】:

      【解决方案2】:

      这是另一本书,所以它可能不是您正在寻找的,但 Peter Norvig 的 Paradigms in Artificial Intelligence Programming 包含许多编写良好的小型 Common Lisp 程序。这不是完全自然的代码,尤其是在前几章中,因为就像 Practical Common Lisp 中的代码一样,它侧重于教你如何使用 CL 编程,但它仍然非常值得一读。它还包含一些在 Common Lisp 之上构建其他语言的优秀示例,并就如何提高 CL 程序的性能提供了一些有价值的建议。

      【讨论】:

      • 这是一个很好的建议。书中的代码一般都很好,但是 Norvig 越来越多地解释如何写出更好的代码。他确实从基本版本开始,然后展示了如何改进它。
      • 我肯定会支持这个。 PAIP 是我最喜欢的关于编程的书籍之一,虽然名字有点误导,恕我直言。我要说的一件事是,这种风格对我来说似乎有点“过时”或学术化。不过这并不是批评——在我看来,流行的 CL 习语在过去 10 到 15 年间发生了一些变化,但不遵循时尚的代码并没有错。
      【解决方案3】:

      CL-PPCRE 经常被引用为一个很好的例子,这是有充分理由的。实际上,可能 Edi Weitz 的任何一个库都可以很好地阅读,但 CL-PPCRE 特别聪明,它是一个有用且令人印象深刻的库。除此之外,许多 CL 实现主要是用 CL 编写的。选择通常在 CL 中实现的 CL 的某些部分并比较不同的实现如何处理它是非常有成效的。特别是,大型有用宏系统的一些最佳示例是标准中事物的实现。 Loop 是一本有趣的读物,或者如果你真的很有野心,你可以比较一些 CLOS 的实现。

      如果您对某个计算领域特别感兴趣,可能值得一提,以便人们可以针对该领域量身定制建议。

      【讨论】:

      • Sacla 在 Common Lisp 中实现了相当大的 Common Lisp 块,所以这将是您建议的一个很好的例子。
      【解决方案4】:

      元对象协议的艺术 - 是一本包含有史以来最漂亮的代码的书。

      【讨论】:

        【解决方案5】:

        我唯一能提供的就是编程。我就是这么做的。

        我做了两件事。我解决了一个我熟悉的问题,一个单元测试框架并将其扩展为包括测试套件。了解宏的编写。

        我做的第二件事是玩弄 CL 中的基本对象。宏、闭包和样式。

        也不要忘记从 Lispers 那里获得有关您的代码的反馈。

        (defun ugly-lisp-code? () ())

        【讨论】:

        • 您完全正确,您需要实际编程以提高熟练度。然而,就像作者一样(你谈到了这一点),我们有时需要了解“好”的含义,以便我们可以模仿它。
        • 不过,它不仅仅是做得“好”。尝试从命令式转变为声明式“GOOD”。
        【解决方案6】:

        我喜欢 SBCL 代码。

        【讨论】:

          【解决方案7】:

          其他建议(PAIP 和 CL-PPCRE)非常好。我还建议熟悉Alexandria 的代码并查看GBBopen

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-12-03
            • 2014-06-10
            • 2011-09-05
            • 1970-01-01
            • 1970-01-01
            • 2016-08-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多