下面与SBCL REPL的交互是怎么回事(最后一个表格)?
TEST> (acons 'k 'v1 nil)
((K . V1))
TEST> (assoc 'k *)
(K . V1)
TEST> (push 'v2 (cdr *))
(V2 . V1)
TEST> (cdr '(K . V1))
(V2 . V1)
我猜这是一个错误?
在 SLIME 中使用演示文稿可能会导致一个可能的交互问题。
我正在使用 SLIME 和 SBCL。
CL-USER> (acons 'k 'v1 nil)
((K . V1))
CL-USER> (assoc 'k *)
(K . V1)
CL-USER> (push 'v2 (cdr *))
(V2 . V1)
CL-USER> (cdr '(K . V1))
(V2 . V1)
CL-USER>
所以,我可以得到和你一样的结果。我做了什么?
首先:SLIME 可以使用演示文稿,而不仅仅是文本数据。 presentation 是实际数据的文本表示。然后文本仍然链接到基础数据。
我正在输入:
(acons 'k 'v1 nil)
CL-USER> (acons 'k 'v1 nil)
SLIME 呈现结果列表:
((K . V1))
我正在输入:
(assoc 'k *)
CL-USER> (assoc 'k *)
SLIME 呈现结果列表:
(K . V1)
我正在输入:
(push 'v2 (cdr *))
CL-USER>
SLIME 呈现结果列表:
(V2 . V1)
现在变得有趣了。我正在输入
(cdr '
,然后通过复制/粘贴从上面复制*演示文稿 (K . V1)
。我不是在输入列表,而是在复制它。然后我输入 )
。
CL-USER> (cdr '(K . V1))
演示文稿的基础数据已更改。史莱姆告诉 SBCL 评估
(cdr '(K V2 . V1))
。
我们可以看到实际更改后的演示文稿的值:我再次复制上面的
(K . V1)
演示文稿。
CL-USER> '(K . V1)
(K V2 . V1)
以上显示您所看到的不是您得到的。