Common Lisp入门教程:Geoffrey J. Gordon版

5星 · 超过95%的资源 需积分: 33 12 下载量 38 浏览量 更新于2024-07-28 收藏 416KB PDF 举报
"Lisp 入门教程" Lisp是一种古老而强大的编程语言,以其独特的语法和灵活性著称。在Lisp中,一切皆为列表,这种特性使得它非常适合进行函数式编程。本教程是针对初学者的彩色版入门资料,排版清晰,易于阅读。 在Lisp中,符号(Symbols)是非常基础的元素。它们可以看作是存储值的容器,类似于其他语言中的变量。符号可以包含字母、数字和连接符,但必须以字母开头。例如,`a`, `b`, `c1`, `foo`, `bar`, `baaz-quux-garply` 都是合法的符号。需要注意的是,如果仅输入数字或以数字开头,Lisp可能会将其解析为整数而非符号。 在Lisp中,你可以使用`setq`来为符号赋值,例如 `(setq a 5)` 将符号`a`的值设置为5。然后,你可以通过在表达式前加上单个引号(')来获取符号的值,如 `(a)`。这里,`a`返回了5。 `let`表达式允许你在特定的作用域内临时绑定符号的值,一旦`let`块结束,原来的值就会恢复。例如,`(let ((a 6)) a)` 在当前作用域内将`a`的值暂时设置为6,当`let`执行完毕,`a`又恢复到5。 Lisp中的函数调用通常通过`(`和`)`包围的参数列表来实现,如 `(+)` 是加法函数,`(+ a 6)` 表示将符号`a`的值与6相加,如果`a`是5,结果就是11。 未定义的符号尝试取值会导致错误。在尝试访问未绑定(unbound)的符号`b`时,Lisp会抛出错误,因为`b`没有被赋予任何值。 Lisp中有两个特殊的符号:`t` 和 `nil`。它们分别代表真和假,且它们的值总是自我指涉的,即`t`的值是`t`,`nil`的值是`nil`。这在逻辑判断和条件表达式中十分常用。 此外,提及的两本关于Lisp的经典书籍分别是Guy L. Steele Jr.的《Common Lisp: the Language》(第一版和第二版),以及Dave Touretsky的著作,尽管后者在本教程中未做详细介绍。 Lisp提供了一种简洁且高度表达性的编程模型,它的符号、赋值、函数调用和逻辑值的概念构成了其核心基础。通过深入学习和实践,你将能够掌握这种强大的编程语言,并利用其特性来解决各种复杂问题。