[clojure] Clojure에서 멀티맵 사용하기

Clojure는 함수형 프로그래밍 언어로서 많은 데이터 구조를 제공합니다. 그중 하나인 “멀티맵”은 하나의 키에 다수의 값을 매핑할 수 있는 유용한 구조체입니다. 이 글에서는 Clojure에서 멀티맵을 사용하는 방법에 대해 살펴보겠습니다.

멀티맵이란?

멀티맵은 하나의 키에 여러 값을 매핑할 수 있는 자료 구조입니다. 이를 통해 하나의 키에 대응하는 값으로 여러 항목을 다룰 수 있습니다.

Clojure에서의 멀티맵

Clojure의 clojure.core 네임스페이스에는 멀티맵을 다루기 위한 여러 함수들이 포함되어 있습니다. 가장 일반적으로 사용되는 멀티맵은 clojure.corehash-map을 사용하여 생성할 수 있습니다.

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

위의 예시에서 multi-map은 키 :key1:value1:value2, 그리고 :key2:value3을 매핑하는 멀티맵을 생성합니다.

멀티맵의 값에 접근하려면 get 함수를 사용하면 됩니다.

(get multi-map :key1)
;; => #{:value1 :value2}

멀티맵 조작

멀티맵은 assoc 함수를 사용하여 값을 추가하거나 업데이트할 수 있습니다.

(assoc multi-map :key1 (conj (get multi-map :key1) :value3))
;; => {:key1 #{:value1 :value2 :value3}, :key2 #{:value3}}

삭제는 dissoc 함수를 사용하여 할 수 있습니다.

(dissoc multi-map :key1)
;; => {:key2 #{:value3}}

결론

Clojure에서 멀티맵은 하나의 키에 여러 값을 매핑할 수 있는 유용한 자료 구조입니다. hash-map을 사용하여 멀티맵을 생성하고 get, assoc, dissoc 등의 함수를 사용하여 멀티맵을 다룰 수 있습니다.

멀티맵은 하나의 키에 대응하는 값으로 여러 항목을 관리해야 하는 경우 유용하게 사용할 수 있는데, 겹치는 키에 대한 처리가 용이하기 때문입니다.

더 많은 정보를 원하시면 Clojure 공식 문서를 참고하시기 바랍니다.