我试图理解列表,但我很困惑为什么第二个例子(下面)编译了,而第一个没有编译。
在这两个例子中,我们(试图)比较字符列表中的每个元素(?a?b?c)是否等于?a,其思想是它返回(t nil nil)。这两个例子之间的唯一区别是第二个例子没有使用临时变量来保存列表)。
我做错了什么?(我对照GNU文档检查了我的列表赋值语法,没有发现任何错误…)
编辑:我的错误是没有注意细节;正如Stefan所指出的,编译时的错误是由于括号放错了位置。如果你来这篇文章想了解Elisp中的列表,很抱歉让你失望。
示例#1(不编译):
(let (char-to-compare, char-list)
(setq char-to-compare ?a)
(setq char-list '(?a ?b ?c))
(mapcar (lambda(element) (char-equal element char-to-compare)) char-list))
示例#2:(正确编译和运行):
(let (char-to-compare)
(setq char-to-compare ?a)
(mapcar (lambda(element) (char-equal element char-to-compare)) '(?a ?b ?c)))
使用TAB键缩进代码。这会告诉你出了什么问题。