[clojure] Clojure의 퍼시스턴스 데이터 구조의 순회와 검색

Clojure는 함수형 프로그래밍 언어로서 다양한 퍼시스턴스 데이터 구조를 제공합니다. 이러한 데이터 구조는 수정이 불가능하며 변경이 필요한 경우 새로운 버전이 생성됩니다. Clojure의 퍼시스턴스 데이터 구조를 순회하고 검색하는 방법에 대해 알아보겠습니다.

순회 (Traversal)

Clojure에서는 다양한 방법으로 퍼시스턴스 데이터 구조를 순회할 수 있습니다. 대표적으로 map, reduce, filter 함수 등을 활용하여 순회할 수 있습니다.

예제 1: Vector 순회

(def my-vector [1 2 3 4 5])

(defn print-square [x]
  (println (* x x)))

(map print-square my-vector)

예제 2: Map 순회

(def my-map {:a 1 :b 2 :c 3})

(defn print-key-value [key value]
  (println (str key ": " value)))

(doseq [[k v] my-map]
  (print-key-value k v))

Clojure에서는 get, contains?, keys, vals 등의 함수를 사용하여 데이터 구조 내에서 검색을 수행할 수 있습니다.

예제 3: Map에서 값 찾기

(def my-map {:a 1 :b 2 :c 3})

(println (get my-map :b)) ; 2
(println (contains? my-map :d)) ; false

예제 4: Map의 키와 값 가져오기

(def my-map {:a 1 :b 2 :c 3})

(println (keys my-map)) ; (:a :b :c)
(println (vals my-map)) ; (1 2 3)

Clojure의 퍼시스턴스 데이터 구조는 다양한 방법으로 순회하고 검색할 수 있으며, 함수형 프로그래밍의 장점을 최대한 활용할 수 있습니다.

참고 자료: Clojure - Seqs and Data Structures