1

私は newlisp を学び始めましたが、引用符と ' が私を困惑させました。

> (= '(quote 1) ''1)  
nil

また

> (first (quote (quote 1)))  
quote

> (first ''1)  
ERR: array, list or string expected in function first : ''1

newlisp では、quote は ' ? とは異なります。
または、これはバグですか?

4

1 に答える 1

1

両者には微妙な違いがあります。単一引用符は、引用符で囲まれたセルが保護エンベロープにラップされるときに、ソース コードの変換中に解決されます。関数quoteは同じことを行いますが、評価中です。ほとんどの場合、それらは同じように動作します。

したがって、関数quoteは元の Lisp に似ていquoteます。これ'は、コード変換中に実行される最適化です。コードの変換と評価について詳しく知りたい場合は、関数read-exprと を比較してくださいeval-string

于 2013-12-23T08:17:43.083 に答える