clojure 5

[Brave Clojure #5] 챕터 4 연습문제

챕터 4 연습문제를 풀었습니다. ;;; ex 4.1 (def result (glitter-filter 3 (mapify (parse (slurp filename))))) (map :name result) ;; => ("Edward Cullen" "Jacob Black" "Carlisle Cullen") ;;; ex 4.2 (defn append [[car & cdr] new-suspect] (if car (cons car (lazy-seq (append cdr new-suspect))) (list new-suspect))) (append '() 1) ;; => (1) (append '(1 2 3 4) 5) ;; => (1 2 3 4 5) ;;; ex 4.3 (def validators {:..

[Brave Clojure #4] reduce로 map, filter, some 구현하기

map의 설명을 마치 고 저자는 이렇게 말합니다. "If you want an exercise that will really blow your hair back, try implementing map using reduce, and then do the same for filter and some after you read about them later in this chapter." 안해 볼 수 없겠죠 (defn map-by-reduce [f xs] (seq (reduce #(conj %1 (f %2)) [] xs))) (map-by-reduce inc [1 2 3 4]) ;; => (2 3 4 5) (def food-journal [{:month 1 :day 1 :human 5.3 :critter 2..

[Brave Clojure #2] leiningen은 한 물 갔고, deps.edn을 쓰자

deps.edn 1챕터에서 clojure 프로젝트를 생성하고, 실행하고, 빌드하는 과정은 leiningen이라는 외부 프로그램을 이용합니다. 부록에서는 추가적으로 boot라는 프로그램도 알려주고 있습니다. 책을 쓰던 당시에는 거의 대부분의 사람이 liningen을 사용했고, boot라는 프로그램이 점점 인기를 얻고 있었던 것 같습니다. 그러나 liningen과 boot의 차이점을 알아보기 위해서 검색을 좀 해봤는데, 여전히 liningen은 많은 사람들이 쓰고 있었지만 사용비중이 점차 줄어들고 있는 상황이고, boot는 거의 사라져버렸습니다. 대신해서 많은 사람들이 쓰고있고, 줄어드는 liningen 사용량의 원인이 되는 것이 바로 deps.edn입니다. deps.edn은 clojure 언어를 유지보수하..

[Brave Clojure #1] Brave Clojure 공부 시작

평소에 관심있었던 Clojure 언어를 공부하기 시작했습니다. 여러 자료들 중, 가장 괜찮아 보이는 Brave Clojure라는 책을 골랐습니다. 풀네임은 Clojure For the Brave and True이고, 부족한 영어실력으로 한글화를 해보자면 "용감하고 진실한 자들을 위한 클로져" 쯤 될 것 같습니다. 프로그래밍 언어를 가르치는 책 치고는 꽤나 우스꽝스러운 제목입니다. 비단 제목만 우스꽝스러운 것은 아니고 공부의 과정이 조금이라도 덜 지루하게끔 저자들이 채택한 전략인 것 같습니다. 그래서 새로운 언어를 배우는 것을 4개의 미궁을 헤쳐나가는 것이라고 비유하기도 하고, 실생활과 밀접한 예제를 피하고 "호빗 공격하기"나 "반짝이는 뱀파이어 쫓기"와 같은예제를 낼 것이라고 엄포를 놓습니다. 4개의 미..