我正在编写一个递归函数,在基本情况下返回一个空列表。但是函数的输出在我的列表中显示“空”字,这是我不想要的。就像这样;
(list(list'abc)(list'snd)empty(list'ghi))
我该怎样防止这种情况?感谢。
答案 0 :(得分:3)
问题可能是因为Racket有多种值的打印样式。尝试将其(在语言选择对话框中)更改为“写入”或其调用的任何内容,这应该使其输出((abc) (def) () (ghi))
。
答案 1 :(得分:2)
您在结果中看到的empty
不是“字” - 请注意,它未被引用。如果你做期望结果中有一个空列表,那么看起来你有一个。你甚至可以检查:
> (empty? (third (list (list 'abc) (list 'def) empty (list 'ghi))))
#t
答案 2 :(得分:1)
不知道细节,我最好的猜测就像是
(let ((result (recursive-call ...)))
(if (null? result) (resursive-call (cdr whatever-list))
(cons result (cdr whatever-list)))
基本上,只检查结果是否为空列表,如果是,请不要将其放入要返回的列表中。