=是什么意思?您可以将它用于两种不同的事情:读取后相等和评估后相等。顺便说一句,在 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)