Clojure 에서 conj 를 쓰는경우 list의 경우 앞에, vector의경우 뒤에 삽입된다.
왜 그런가 궁금했는데
conj 의 경우 해당 데이터타입에 맞는 최적(가장 빠른)의 방법으로 결합(conjoin)된다고 한다.
따라서 리스트의 경우 싱글 링크드 리스트 이기 때문에 가장 앞에 삽입되는것이 가장 빠르고
백터는 일종의 어레이이기때문에 뒤에 삽입되는것이 더 빠르다.
관련 링크.
https://medium.com/@greg_63957/conj-cons-concat-oh-my-1398a2981eab
# 2024.10.24 추가
좀더 상세한 설명을 가지는 에릭 노마드의 설명을 추가한다.
conj는 const time add 를 보장하는 인터페이스이고, 리스코프 치환원칙성에 따라 동작자체는 다르다는것
Why does Clojure's conj add to the end of vectors but the beginning of lists?
728x90
'프로그래밍 언어 노트 > Clojure' 카테고리의 다른 글
Clojure로 만든 간단한 PDF 내용 수정 프로그램 (0) | 2020.03.14 |
---|---|
[Clojure] Clojure 와 Haskell 의 DSL 비교 (0) | 2020.01.24 |
[Clojure] clojure 관련 사이트들 2 (0) | 2019.12.16 |
[Clojure] 4Clojure 6 (0) | 2019.10.30 |
[Clojure] 4Clojure 5 (0) | 2019.09.14 |