我有以下内容:
(defun recursive-function (string) "returns list of strings"
;I am trying to return flat list
; create list L
(append (mapcar 'recursive-function L)))
但是由于recursive-function返回一个列表,我最终会得到一个列表列表...,而我只想要一个平面列表。
对于使用标量并返回标量列表的函数实现递归的正确方法是什么?
感谢。
答案 0 :(得分:2)
如果我理解正确,您可以将 reduce 和追加组合在一起,以便在返回之前展平列表。
示例:
(reduce 'append '((1) (2) (3)))
输出:
(1 2 3)
在您的情况下,这可能有效:
(reduce 'append (mapcar 'recursive-function L))
答案 1 :(得分:1)
我相信你正在寻找mapcan:
[...] mapcan和mapcon就像mapcar和 maplist分别是,除了 应用功能的结果是 通过使用组合成一个列表 nconc而不是list。 [...]
(defun recursive-function (string) "returns list of strings"
;I am trying to return flat list
; create list L
(mapcan 'recursive-function L))