我开始学习newlisp,但引用和'拼图我。在newLISP中,报价与'?
> (= '(quote 1) ''1)
nil
在newlisp
或
> (first (quote (quote 1)))
quote
> (first ''1)
ERR: array, list or string expected in function first : ''1
,报价是'有什么不同?
或者,这是一个错误?
我开始学习newlisp,但引用和'拼图我。在newLISP中,报价与'?
> (= '(quote 1) ''1)
nil
在newlisp
或
> (first (quote (quote 1)))
quote
> (first ''1)
ERR: array, list or string expected in function first : ''1
,报价是'有什么不同?
或者,这是一个错误?
这两者之间存在细微的差异。单引号在源代码翻译期间被解析,当引用的单元格被包裹到保护信封中时。功能quote
的作用相同,但在评估期间。对于大多数用途,它们的行为方式是相同的。
所以功能quote
更像是原来的Lisp quote
。 '
是在代码翻译期间执行的优化。如果您想了解更多关于代码翻译和评估的信息,请比较功能read-expr
和eval-string
。
我阅读了newlisp的源代码,** quote **被翻译为SYMBOL,但** **被翻译作为一个QUOTE。我做同样的事情,CL和Schme可以返回报价,'(汽车'')'所以,为什么newlisp这样做? – skeu
Lisps之间有很多不同...... :)至于“为什么”,最好的办法可能是给newLISP的作者发电子邮件,或者在newLISP论坛上提问。 – cormullion
:)非常感谢你! – skeu
对不起,我以为我记得newlisp是Common Lisp-conforming,但它不是... – Bandrami