[clojure] Clojure의 퍼시스턴스 벡터
Clojure는 함수형 프로그래밍 언어로, 변경 가능한 데이터 구조 대신 퍼시스턴스(persistent) 데이터 구조를 사용합니다. 이 데이터 구조는 “원래” 버전을 수정하지 않고 새로운 버전을 생성합니다. 그 중 하나가 퍼시스턴스 벡터(persistent vector)입니다.
퍼시스턴스 벡터란 무엇인가요?
퍼시스턴스 벡터는 immutable한(변경 불가능한) 벡터이며, 데이터가 변경될 때마다 새로운 버전을 생성합니다. 따라서 수정 시 원래 벡터는 그대로 유지되고 새로운 버전이 생성됩니다.
Clojure에서는 변경 불가능한 데이터 구조를 사용하는 것이 중요합니다. 이를 통해 병렬 처리 및 스레드 안전성을 보장하고 예측 가능한 코드를 작성할 수 있습니다.
퍼시스턴스 벡터의 장점
- 새로운 버전을 생성하므로 원래 데이터를 보존
- 변경에 대한 새로운 버전을 효율적으로 관리
- 복사 없는(immutable) 데이터 구조로 안전한 병렬 처리를 가능하게 함
퍼시스턴스 벡터 사용하기
Clojure에서 퍼시스턴스 벡터를 사용하려면 clojure.core
네임스페이스의 vector
함수를 호출합니다. 벡터에 새로운 요소를 추가하려면 conj
함수를 사용합니다.
예시:
(def myVector (vector 1 2 3 4))
(def newVector (conj myVector 5))
위 예시에서 myVector
는 (1 2 3 4)
이며, newVector
는 (1 2 3 4 5)
가 됩니다.
마무리
이러한 내부 메커니즘은 Clojure의 효율적인 데이터 처리와 함수형 프로그래밍 모델을 가능하게 합니다. 퍼시스턴스 벡터는 변경 불가능한 데이터 구조를 통해 안전하고 예측 가능한 코드를 작성할 수 있도록 도와줍니다.
더 많은 정보를 원하시면 Clojure Documentation를 확인해보세요.