我習慣了(quote x)
評估爲x
,(quote (x y z))
評估爲(x y z)
和(car (quote (x y z))
評估爲x
。推理很簡單:引用是一種特殊的形式,它不會評估它的參數,而只是簡單地返回它。球拍中的報價行爲
我剛開始使用的球拍,並認爲(quote x)
計算結果爲(quote x)
,(quote (x y z))
計算結果爲(quote (x y z))
,並(car (quote (x y z))
評估爲(quote x)
。
那麼,實際上,它分別打印這些爲'x
,'(x y z)
和'x
,但這是同樣的事情。
有人可以在這裏解釋推理嗎?如果由於某種原因,(quote (x y z))
評估爲(quote (x y z))
,那麼不應該那輛車是quote
? (quote x)
從哪裏來?
據我所知,在整個計算過程中,Racket的內部行爲與我習慣的一樣,除了打印最終結果時,它將其包裝在報價單中。這在所有情況下都是正確的嗎?如果是這樣,爲什麼要這樣做?
見我注意到在[這個答案](http://stackoverflow.com/a/20643658/1281433):「作爲一個額外的複雜性,一些系統(我想一些語言,球拍博士,特別是)不要在交互式提示中打印表單的值,而是打印一個能夠產生相同結果的表單(對於「相同」的某些值的某些解釋)。例如,您可以評估'(1。 2),並看到輸出(cons 1 2),因爲這是另一種形式,會產生相同的價值。「 –
[Lisp中引用的含義]的可能重複(http://stackoverflow.com/questions/20643147/meaning-of-quote-in-lisp) –