LISP 中的深层嵌套列表 return # 用于我列表的一部分

Deep nested lists in LISP return # for a part of my list

我是 LISP 新手,正在尝试使用深层嵌套列表。 所有带有列表的基本函数,如 CONS 或 LIST 都不会给出正确的结果。他们用符号 #.

替换了部分列表

例如:

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

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

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

您看到的是为简洁起见而串联的输出。实际列表是正确的并且不受影响,但是因为打印到输出太长,lisp REPL 在打印时将其缩短并使用 # 表示它已经这样做了。

您可以通过设置变量 *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