Каков наилучший способ получить простой, эффективный неизменный тип данных очереди в Clojure?
Требуется только две операции: enqueue и dequeue с обычной семантикой.
Я, конечно, рассматривал списки и векторы, но я понимаю, что они имеют сравнительно низкую производительность (т.е. O (n) или хуже) для модификаций в конце и начале соответственно - поэтому не идеальны для очередей!
В идеале мне нужна правильная постоянная структура данных с O (log n) для операций в очереди и деактивации.