我開始學習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