2010-02-10 2 views
1

많은 질문이 넘쳐서 죄송합니다.Lisp,리스트 및 재귀에 관한 몇 가지 질문

나는 다음과 같습니다

(defun recursive-function (string) "returns list of strings" 
;I am trying to return flat list 
; create list L 
(append (mapcar 'recursive-function L))) 

그러나 재귀 기능 이후

이 목록을 반환, 난 그냥 단순 목록을 원하는 반면 나는, 목록 ... 목록의 목록을 끝낸다.

스칼라를 취하여 스칼라 목록을 반환하는 함수에서 재귀를 구현하는 적절한 방법은 무엇입니까?

감사합니다.

답변

2

정확하게 이해했다면, 및 덧붙여을 결합하여 반환하기 전에 목록을 평평하게 할 수 있습니다.

예 :

(reduce 'append '((1) (2) (3))) 

출력 : 귀하의 경우

(1 2 3) 

이 작동 될 수 있습니다

(reduce 'append (mapcar 'recursive-function L)) 
1

을 당신이 mapcan 찾고있는 보라 :

[...] mapcan과 mapcon은 mapcar와 같고 maplist는 각각 적용 함수의 결과가 이고 목록이 아닌 nconc를 사용하여 목록에 결합 된 것입니다. [...]

(defun recursive-function (string) "returns list of strings" 
    ;I am trying to return flat list 
    ; create list L 
    (mapcan 'recursive-function L))