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
我是 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