[clojure] Clojure의 멀티맵 API

Clojure는 멀티맵(MultiMap)이라는 자료구조를 지원합니다. 멀티맵은 여러 개의 값에 대한 하나의 키를 가질 수 있는 데이터 구조로, Clojure의 clojure.core 네임스페이스에 포함되어 있습니다.

멀티맵 생성하기

Clojure에서 멀티맵을 생성하는 방법은 간단합니다. clojure.core 네임스페이스에서 hash-map 함수를 사용하여 키와 값의 시퀀스를 매핑하여 멀티맵을 생성할 수 있습니다.

(def multi-map (hash-map :key1 #{:value1 :value2 :value3}
                        :key2 #{:value4 :value5}))

위의 예제에서 multi-map은 두 개의 키를 가지고 있으며, 각 키는 하나 이상의 값에 매핑되어 있습니다.

멀티맵에 값 추가하기

멀티맵에 새로운 값들을 추가하기 위해서는 assoc 함수를 사용할 수 있습니다.

(def updated-multi-map (assoc multi-map :key1 (conj (:key1 multi-map) :value6)))

위의 예제에서는 assoc 함수를 사용하여 :key1에 새로운 값 :value6을 추가한 updated-multi-map을 생성했습니다.

값 추출하기

멀티맵에서 값들을 추출하고 싶을 때는 get 함수나 get-in 함수를 사용할 수 있습니다.

(get multi-map :key1)  ;; => #{:value1 :value2 :value3}
(get-in multi-map [:key2] #{}))  ;; => #{:value4 :value5}

위의 예제에서는 get 함수와 get-in 함수를 사용하여 멀티맵에서 값들을 추출하는 방법을 보여주고 있습니다.

Clojure의 멀티맵 API는 다양한 작업을 수행할 수 있는 풍부한 함수들을 제공하며, 이를 통해 데이터를 효율적으로 다룰 수 있습니다.

더 자세한 정보는 Clojure 공식 문서를 참고하세요.