我开始学习newlisp,但引用和'让我感到困惑。
> (= '(quote 1) ''1)
nil
或
> (first (quote (quote 1)))
quote
> (first ''1)
ERR: array, list or string expected in function first : ''1
在Newlisp中,quote 不同于 ' ?
或者,这是一个错误?
两者之间有一个微妙的区别。单引号在源代码转换期间解析,当引用的单元格包装到保护信封中时。该函数quote
执行相同的操作,但在评估期间。在大多数情况下,它们的行为方式相同。
所以函数quote
更像是原来的Lisp quote
。'
是在代码转换期间执行的优化。如果您想了解有关代码转换和评估的更多信息,请比较函数read-expr
和eval-string
。