2013-12-23 36 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