请参阅此示例。我正在使用 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*
我确实明白是双引号引起了问题。我不明白的是,对象不能以 #\) 开头
是什么意思?我从哪里开始使用#\)
?我期待一些错误消息,例如 unmatched Parenthesis
。
最佳答案
'henry
之后的额外引号字符是另一个对象的开头,这在以下上下文中有意义:
(defparameter *pudding-eater* 'henry '(a b c))
(无论如何,如果 defparameter 接受了那么多参数)
但是,引用后的下一个字符是右括号。用于显示字符(而不是符号、字符串等)的 Common Lisp 表示法是 #\
前缀,后跟字符。
因此,错误消息没有说明任何有关 \
或 #
字符的内容,仅说明 )
,并且它告诉您有一个它需要更多表达式,而不是当前表达式的末尾(因为您通过添加 '
字符启动了一个表达式)。
关于common-lisp - CLISP 错误消息 : an object cannot start with #\). 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758660/