我是LISP的新手并尝试使用深层嵌套列表。 所有带有CONS或LIST等列表的基本功能都不能给出正确的结果。它们用符号#。
替换列表的一部分例如:
(列表'(1(2(3(4(5)))))'(6(7(8(9(10)))))))
=> ((1(2(3#)))(6(7(8#))))
有没有人有想法解决这个问题?
答案 0 :(得分:3)
您可以通过设置变量*print-level*
和*print-length*
来调整打印内容的深度和长度。
(看起来你的*print-level*
是4。)
完整的文档和示例位于HyperSpec。
其中一个例子:
(setq a '(1 (2 (3 (4 (5 (6))))))) => (1 (2 (3 (4 (5 (6))))))
(dotimes (i 8)
(let ((*print-level* i))
(format t "~&~D -- ~S~%" i a)))
>> 0 -- #
>> 1 -- (1 #)
>> 2 -- (1 (2 #))
>> 3 -- (1 (2 (3 #)))
>> 4 -- (1 (2 (3 (4 #))))
>> 5 -- (1 (2 (3 (4 (5 #)))))
>> 6 -- (1 (2 (3 (4 (5 (6))))))
>> 7 -- (1 (2 (3 (4 (5 (6))))))
=> NIL
答案 1 :(得分:2)
您看到的是为了简洁而连接的输出。实际列表是正确的并且不受影响,但由于打印到输出的时间太长,因此lisp REPL在打印时缩短它并使用#
表示它已经这样做了。