=はどういう意味ですか?読み取り後の平等と評価後の平等という2つの異なる目的で使用できます。ところで、Lisp自体では、関数は=
数値を比較します。
最初のステップは読むことです:
(list 'quote '5)
読む>(LIST (QUOTE QUOTE) (QUOTE 5))
(list '' '5)
読む>(LIST (QUOTE (QUOTE (QUOTE 5))))
(list ' 5)
読む> (LIST (QUOTE 5))
(list 'oddp '5)
読む> (LIST (QUOTE ODDP) (QUOTE 5))
これ'
が読み取りマクロです。次のテキスト形式を変換します。 'someform
として読み取られ(QUOTE SOMEFORM)
ます。プリンタは、印刷時にこれを再変換する場合があります。それがきれいな印刷とどのように相互作用するかに注意してください。次の例はLispWorksにあります。
CL-USER 50 > '(QUOTE SOMEFORM)
(QUOTE SOMEFORM)
CL-USER 51 > (setf *print-pretty* t)
T
CL-USER 52 > '(QUOTE SOMEFORM)
'SOMEFORM
引用符のreadmacro文字'
が空白を読み取ることにも注意してください。
'5
たとえばと同じように読み取られます' 5
。
ただし、空白を使用せずに、引用符を次の式の直前に配置することをお勧めします。
2番目のステップは評価です:
(LIST (QUOTE QUOTE) (QUOTE 5))
eval> (QUOTE 5)
prettyprint>'5
(LIST (QUOTE (QUOTE (QUOTE 5))))
eval> ((QUOTE (QUOTE 5)))
prettyprint>(''5)
(LIST (QUOTE 5))
eval>(5)
(LIST (QUOTE ODDP) (QUOTE 5))
eval>(ODDP 5)