[clojure] Clojure의 퍼시스턴스 데이터 구조의 함수 및 연산
Clojure는 함수형 프로그래밍 언어로서 퍼시스턴스 데이터 구조를 제공합니다. 퍼시스턴스 데이터 구조란 수정이 발생할 때 기존의 데이터를 변경하지 않고 새로운 데이터 구조를 반환하는데, 이를 가능하게 하는 변형이며, 퍼시스턴스 데이터 구조는 변경 불가능한 특성을 갖습니다.
벡터(Vector)
벡터는 순서가 있는 값들의 컬렉션입니다. Clojure의 벡터는 여러가지 기능을 제공하는데요, 그 중에서도 자주 사용되는 함수 및 연산을 알아보겠습니다.
함수
conj
: 벡터 끝에 원소를 추가합니다.assoc
: 특정 인덱스의 값을 변경한 새로운 벡터를 반환합니다.subvec
: 주어진 범위에 해당하는 부분 벡터를 반환합니다.
연산
nth
: 인덱스를 통해 특정 위치의 원소를 반환합니다.count
: 벡터의 길이를 반환합니다.
맵(Map)
Clojure의 맵은 key-value 쌍의 컬렉션입니다. 맵의 함수 및 연산을 살펴보겠습니다.
함수
assoc
: 새로운 키-값 쌍을 추가하거나 이미 존재하는 값을 덮어씁니다.dissoc
: 지정된 키와 연관된 값을 맵에서 제거한 새로운 맵을 반환합니다.merge
: 두 맵을 병합한 새로운 맵을 반환합니다.
연산
keys
: 맵의 키들을 시퀀스로 반환합니다.vals
: 맵의 값들을 시퀀스로 반환합니다.
이러한 함수와 연산을 이용해서 Clojure의 퍼시스턴스 데이터 구조를 조작할 수 있습니다. 이러한 유연한 데이터 조작 능력은 Clojure를 사용하는 개발자들에게 많은 혜택을 주고 있습니다.
참고 자료
- Clojure Documentation
- Clojure Programming by Chas Emerick, Brian Carper, and Christophe Grand