2013-12-23 30 views
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 

,报价是'有什么不同?
或者,这是一个错误?

+0

对不起,我以为我记得newlisp是Common Lisp-conforming,但它不是... – Bandrami

回答

1

这两者之间存在细微的差异。单引号在源代码翻译期间被解析,当引用的单元格被包裹到保护信封中时。功能quote的作用相同,但在评估期间。对于大多数用途,它们的行为方式是相同的。

所以功能quote更像是原来的Lisp quote'是在代码翻译期间执行的优化。如果您想了解更多关于代码翻译和评估的信息,请比较功能read-expreval-string

+0

我阅读了newlisp的源代码,** quote **被翻译为SYMBOL,但** **被翻译作为一个QUOTE。我做同样的事情,CL和Schme可以返回报价,'(汽车'')'所以,为什么newlisp这样做? – skeu

+0

Lisps之间有很多不同...... :)至于“为什么”,最好的办法可能是给newLISP的作者发电子邮件,或者在newLISP论坛上提问。 – cormullion

+0

:)非常感谢你! – skeu