Ped*_*ino 1 common-lisp negation
我正在学习《Common LISP: A Gentle Introduction to Symbolic Computation》这本书。这本书大约有 40 年的历史,显然,有点经典。
在第 1 章中,作者使用框来解释具有输入和输出的函数。这是其中一张图:

其实上图就是这个问题的答案。我得到了第一个问题和第二个问题:

(not (not ...)) 的组成取决于“...”变量部分。例如,终端显示:
CL-USER> (not (not 12))
T
CL-USER> (not (not nil))
NIL
Run Code Online (Sandbox Code Playgroud)
这本书的练习在某些方面似乎是错误的。但是,由于我对 CL 不太了解,我认为最好问问更有经验的 CL 开发人员是否也认为这是答卷中的一个奇怪点。
我正在使用 SBCL、Slime 和 Common Lisp。我是 CL 的新手,但我在 Racket 方面有一些经验。
提前致谢
练习 1.14:
实际上作者希望我们使用符号NOT作为函数的输入NOT。输入不是命名的函数NOT,也不是命名的变量NOT。因此需要在计算中引用符号:
> (NOT 'NOT)
NIL
Run Code Online (Sandbox Code Playgroud)
由于每个符号都是真,非真就是假。Common Lisp 中的false是符号NIL。
符号NIL和之间有什么区别NOT?
NIL 对自己进行评估NOT没有默认值并计算为变量。要将符号评估NOT为自身,需要引用它。这在旧版本的第3.8章使用符号和列表作为数据进行了解释。