LISP中的深层嵌套列表返回#列表的一部分

时间:2015-02-27 13:10:44

标签: lisp nested-lists

我是LISP的新手并尝试使用深层嵌套列表。 所有带有CONS或LIST等列表的基本功能都不能给出正确的结果。它们用符号#。

替换列表的一部分

例如:

(列表'(1(2(3(4(5)))))'(6(7(8(9(10)))))))

=> ((1(2(3#)))(6(7(8#))))

有没有人有想法解决这个问题?

2 个答案:

答案 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在打印时缩短它并使用#表示它已经这样做了。