【发布时间】:2021-08-05 16:04:45
【问题描述】:
我正在使用 Common Lisp、SBCL 和 Slime。我是 Common Lisp 的新手。
显然,这是 Common Lisp 中的循环列表:
#1=('a 'b 'c . #1#)
这将提供无限的 'a 'b 'c 'a 'b 'c 'a...
当我把它放在 REPL 上时,它会一直运行:
CL-USER> #1=('a 'b 'c . #1#)
为什么会这样?为什么 REPL 不返回它收到的“对象”?
如果我要求列表的下一个元素,我可以理解无限行为。但是,我向 REPL 询问了对象本身。
我期待与正确列表或点列表相同的行为:
CL-USER> (list 'a 'b 'c)
(A B C)
CL-USER> (cons 'a (cons 'b 'c))
(A B . C)
【问题讨论】:
-
另外请注意,通常不需要在引用列表中引用符号。
标签: common-lisp read-eval-print-loop infinite circular-list