Common Lisp入门指南:从基础到实践

需积分: 33 3 下载量 25 浏览量 更新于2024-07-26 收藏 416KB PDF 举报
"LISP入门教程,适用于初学者,讲解LISP基础,由Geoffrey J. Gordon等人编著,特别提及在CMU环境下编写。推荐的Lisp学习资源包括Guy L. Steele Jr.'s《CommonLISP: the Language》一书。教程中详细介绍了Lisp中的Symbols概念,包括符号的创建、赋值以及使用。" LISP是一种古老而强大的编程语言,以其独特的语法和结构而闻名。在LISP中,一切皆为列表,这使得它非常适合于处理和表示数据。本教程针对LISP初学者,旨在帮助他们轻松掌握LISP的基础知识。 首先,我们来了解LISP中的核心概念——Symbols。在LISP中,Symbols可以看作是字符串,但它们有特殊的意义和用途。Symbols可以包含字母、数字和连接符,但必须以字母开头。例如,`a`, `b`, `c1`, `foo`, `bar`, `baaz-quux-garply` 都是有效的符号。值得注意的是,如果仅输入数字或以连接符开头的数字,LISP会将其解析为数值而非符号。 在LISP中,你可以为符号赋值并检索其值。`setq` 是用于设置符号值的函数,例如 `(setq a 5)` 将`a`的值设置为5。然后,通过简单的符号引用,如 `(a)`,可以获取该符号的当前值。在LISP中,表达式 `(let ((a 6)) a)` 创建了一个局部作用域,在这个作用域内`a`的值被临时绑定为6。一旦`let`块结束,`a`的值将恢复到之前的5。符号也可以作为函数参数,例如 `(+)` 函数接受两个参数,`(+ a 6)` 将`a`的值与6相加。 在LISP中,有两个特殊的符号,`t` 和 `nil`。它们分别代表真和假。无论何时查询`t`的值,总会得到`t`本身,同样,`nil`的值始终是`nil`。这些特殊符号在条件判断和逻辑操作中扮演着重要角色。 在LISP环境中尝试访问未定义的符号会导致错误。例如,如果你尝试获取没有赋值的`b`的值,LISP会抛出一个“Error: Attempt to take the value of the unbound symbol B”的错误。 教程中提到,对于深入学习LISP,Guy L. Steele Jr.的《CommonLISP: the Language》是一本极好的资源。这本书的第一版和第二版都值得阅读,它们涵盖了LISP的基础和标准,是进阶学习的宝贵资料。 LISP入门教程提供了一个简单易懂的起点,让初学者能够快速理解LISP的基本概念,尤其是符号的概念和用法,为进一步学习LISP语言打下坚实基础。通过实践和阅读推荐书籍,学习者将能更好地掌握LISP的强大功能和灵活性。