0

我最近拿起一本关于 lisp 的旧书,我正在尝试使用 emacs 学习 lisp。我同时使用了 ielm 模式和交互模式,但是我遇到了未定义关键字的问题。我正在遵循这本书的例子,但有时我会得到一个

*** eval 错误 *** Symbol 的函数定义为 void: -the keyword-

诸如:DEFINE、TIMES、DIFFERENCES、ADD1 等关键字将不起作用。而其他关键字,如:SQRT、MAX、MIN 等也可以。

我是 emacs 的完整初学者,所以我不明白什么是错的。

4

3 回答 3

3

lisp有几种方言,例如 Common Lisp、Scheme、Emacs Lisp 等。在一种方言中可用的函数、变量或关键字可能在另一种方言中不可用。

正如 Rainer 所说,您书中的方言可能不再使用,您不应该学习它。选择最近的一本并购买一本书或在线查找文档。如果您是 Lisp 新手,那么从作为 Lisp 的主要方言且相对简单的Scheme开始可能是一个好主意。

最后一件事:Emacs 是一个编辑器,你可以用它来用任何 Lisp 方言编程。现在,Emacs 本身(主要)是用 Emacs Lisp 编写的,这是一种专为 Emacs 设计的 Lisp 方言。仅当您想修改或自定义 Emacs 时,了解它才有用。

于 2012-12-12T10:57:08.090 回答
1

您的书可能很旧,并且使用了不再使用的 Lisp 方言。

您可能希望获得该书的稍新版本。

请参阅:http ://people.csail.mit.edu/phw/Books/#AI 以获取本书的旧 Common Lisp(来自 80 年代)代码。

于 2012-12-12T11:40:45.263 回答
0

您可能会更好地阅读一本书讨论Emacs Lisp(一本与 Emacs 本身捆绑在一起,键入C-h i m Emacs Intro RET以访问它)。

顺便说一句,这本书看起来很古老,我猜它描述了一种非标准的 Lisp 方言。考虑改为阅读诸如Practical Common LispStructure and Interpretation of Computer Programs之类的内容。

于 2012-12-12T13:48:02.613 回答