=是什么意思?您可以将它用于两种不同的事情:读取后相等和评估后相等。顺便说一句,在 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
读法与 example 相同' 5
。
但是将引号直接放在下一个表达式之前是一种很好的风格,没有空格。
第二步是评估:
(LIST (QUOTE QUOTE) (QUOTE 5))
评估 > (QUOTE 5)
漂亮打印 >'5
(LIST (QUOTE (QUOTE (QUOTE 5))))
评估 >((QUOTE (QUOTE 5)))
漂亮打印 >(''5)
(LIST (QUOTE 5))
评估 >(5)
(LIST (QUOTE ODDP) (QUOTE 5))
评估 >(ODDP 5)