Common Lisp 教程:队列实现与破坏性函数解析

需积分: 30 672 下载量 197 浏览量 更新于2024-08-10 收藏 2.7MB PDF 举报
"队列实现与Common Lisp中文版用户手册" 队列是一种常用的数据结构,它遵循先进先出(FIFO)的原则。在图12.7的队列实现中,`make-queue`函数用于创建一个新的空队列,而`enqueue`函数用于向队列末尾添加元素,`dequeue`函数则用于从队列头部移除并返回第一个元素。在示例中,队列`q1`首先被初始化为空,然后依次加入元素'A'、'B'和'C',其内部结构如图12.6所示。当从队列中连续弹出元素'A'和'B'后,再向队列`q1`添加元素'D',队列的结构变为`((C D) D)`。 在Common Lisp中,有一些函数是破坏性的,即它们会修改输入的列表结构以提高效率。例如,`delete`函数是`remove`的一个变体,它可以从列表中删除指定的元素。尽管`delete`可能会改变列表的结构,但它的行为并不保证,因为它没有明确的副作用。在多数Common Lisp实现中,如下示例所示,`delete`会删除列表`lst`中的所有'a'元素: ```lisp (setf lst '(a r a b i a)) ; 设置lst为'(a r a b i a) (delete 'a lst) ; 删除lst中的'a' ``` 这本书《ANSI Common Lisp》是学习Common Lisp语言的实用资源,适用于初学者和专业程序员。它分为两部分,前半部分通过大量实例讲解关键概念,而后半部分是一个完整的ANSI Common Lisp操作符参考。书中不仅介绍了Lisp的基础知识,还强调了递归、指针的作用、第一级函数的重要性和更多高级主题,如宏、CLOS(Common Lisp Object System)、列表操作和程序优化。此外,还有三个实际应用示例来巩固前面的知识,分别是逻辑推理程序、HTML生成器和面向对象编程的嵌入式语言。附录部分提供了调试指南、源码、ANSI Common Lisp与其他Lisp版本的区别以及完整的ANSI Common Lisp参考手册。 通过这本书,读者可以系统地学习Common Lisp,并在实践中掌握这一强大的编程语言。学习Lisp的最佳方式是直接动手编程,书中的实例和练习可以帮助读者迅速上手。