안녕하세요, 저는 clojure에 대해 새로운 제품입니다. 목록의 각 최상위 요소에서 괄호 쌍을 제거하는 함수를 작성하려고합니다. 최상위 요소가 목록이 아니면 추가됩니다. 예를 들어,Clojure - 재귀 함수 위로
>(up '((1 2) (3 4)))
(1 2 3 4)
>(up '(x (y) z))
(x y z)
바로 지금, 한 쌍의 괄호를 제거하려고하면 함수가 너무 빨리 끝나는 문제가 있습니다. 가능한 경우 다른 함수를 사용하지 않고 반복적으로이 작업을 수행하려고합니다. 나는 문제가 나는 단점 - 보내고 내 기능을 종료 중첩 된리스트의 마지막 요소로 하늘의리스트를,하지만 난 방법을 알아낼 수 없다는 것을 알고
(defn up [lst]
(if (empty? lst)
()
(if (list? (first lst))
(up (first lst))
(cons (first lst) (up (rest lst))))))
: 나는 순간에 무엇을 가지고 그렇지 않으면 할 수 있습니다. 그 자체 인 항목을 칠 때, 때문에
귀하의 기능이 너무 빨리 종료 ...
괄호를 한 수준 만 평평하게 제거하거나 제거하려고합니까? 아래의 오스카의 대답은 시퀀스를 완전히 평평하게합니다. –
나는 그것을 평평하게하고 싶다. –