그래서 숫자를 이용해서
0@test.com 1@test.com 2@test.com 3@test.com 4@test.com . . . 1000000@test.com이렇게 만드는 것인데 클로저로 하니까 아무리 해도 안되서, 결국 자바로 만들었다.
나는 정말 많이 부족한가보다... 라고 생각하고 있던 찰나
일이 끝나고 저녁 먹으면서 한번 REPL을 켜서 테스트해봤다.
(spit "/Users/tom/a.txt" (clojure.string/join "\n" (flatten (for [x (range 0 1000000)] (conj '() (str x "@test.com"))))))잘된다.
클로저를 하지 말아야 하나...
해당내용을 구글 클로저 그룹스에 물어봤는데 다들 멋지게 풀어 선보이기 시작했다.
(spit "a.txt" (clojure.string/join "\n" (for [x (range 1000000)] (str x "@test.com, " x)))) (spit "a.csv" (with-out-str (dotimes [n 1e6] (println (str n "...@test.com, " n)))))거기서 나온 조언은 lazy시퀀스가 반환될 때, dall함수나 dorun함수를 이용해서 강제로 실행시켜야 한다는 것이다.
ex)
(def foo (map println [1 2 3])) #'user/foo (def foo (doall (map println [1 2 3]))) 1 2 3 #'user/foolazy sequence에 대한 개념이 부족했었다. 정말... 아직 멀었다.
댓글 없음:
댓글 쓰기