私は Clojure を学んでおり、Python の同様の機能との類似点を描くことによって、読者、引用、評価、ホモイコニシティを理解しようとしています。
Python では、評価を回避 (または延期) する 1 つの方法は、式を引用符で囲むことです。'3 + 4'
. これは後で を使用して評価できますeval
。eval('3 + 4')
お譲りし7
ます。(Python 値のみを引用する必要がある場合はrepr
、引用符を手動で追加する代わりに関数を使用できます。)
Lisp では、引用や評価にquote
orを使用します。お譲りします。'
eval
(eval '(+ 3 4))
7
したがって、Python では「引用符で囲まれた」ものは文字列で表されますが、Lisp ではquote
最初の項目を持つリストで表されます。
最後に、私の質問:引用されていない(eval 3)
にもかかわらず、Clojure が許可するのはなぜですか? 3
それは Lisp スタイル (可能な限りエラーの代わりに答えを出そうとする) の問題ですか、それとも他の理由があるのでしょうか? この動作は Lisp にとって不可欠ですか?