내가 목록 건물 재귀 함수있어 :Clojure (또는 임의의 함수 언어) : 재귀 함수를 사용하여 평면 목록을 작성하는 기능적인 방법이 있습니까?
(defn- traverse-dir
"Traverses the (source) directory, preorder"
[src-dir dst-root dst-step ffc!]
(let [{:keys [options]} *parsed-args*
uname (:unified-name options)
[dirs files] (list-dir-groomed (fs/list-dir src-dir))
을 ... 트래버스-DIR의 재귀 호출은 DIR-핸들러
(doall (concat (map-indexed (dir-handler) dirs) (map-indexed (file-handler) files))))) ;; traverse-dir
목록의 마지막 식입니다 , traverse-dir에 의해 만들어지며, 플랫 한 것을 원하지만, 플랫 한 것을 원한다 :
flat-list (->> (flatten recursive-list) (partition 2) (map vec))
처음에는 평면 목록을 작성하는 방법이 있습니까? 변경 가능한 목록을 사용하지 않는 것, 즉.
당신이 무엇을 요구하고 있는지 분명하지 않습니다. 'traverse-dir'은 아무것도 만들지 않습니다 ...'let' body에 아무것도 없기 때문에'nil '을 반환합니다. 'listdir-groomed','dir-handler','file-handler'가 무엇인지는 알려주지 않습니다. 제목을 암시하는 것처럼 목록을 병합하려는 경우 stackoverflow를 검색해보십시오. –