3x8*_*9g2 3 clisp common-lisp quote
请看这个例子。我正在使用 GNU CLISP 2.49。
(defparameter *pudding-eater* 'henry')
;; output:
READ from
#<INPUT CONCATENATED-STREAM #<INPUT STRING-INPUT-STREAM> #<IO TERMINAL-STREAM>>: an
object cannot start with #\)
(defparameter *pudding-eater* 'henry)
;; output:
*PUDDING-EATER*
Run Code Online (Sandbox Code Playgroud)
我确实明白是双引号引起了问题。我不明白的是,什么an object cannot start with #\)
意思?我从哪里开始#\)
?我期待一些错误消息,如umatched parenthesis
.
您后面的额外引号字符'henry
是另一个对象的开头,这在以下上下文中是有意义的:
(defparameter *pudding-eater* 'henry '(a b c))
Run Code Online (Sandbox Code Playgroud)
(如果 defparameter 接受了那么多参数,无论如何)
但是,引用后的下一个字符是关闭括号。用于显示字符(而不是符号、字符串等)的 Common Lisp 表示法是#\
前缀,后跟字符。
因此,错误消息并没有说明关于\
或#
字符的任何内容,只有)
,并且它告诉您有一个它期望更多表达式而不是当前表达式的结尾(因为您通过添加该'
字符开始了一个表达式)。