user=> (def empty-queue clojure.lang.PersistentQueue/EMPTY)
#'user/empty-queue
user=> (def aqueue (atom empty-queue))
#'user/aqueue

user=> (empty? @aqueue)
true

user=> (swap! aqueue conj 1)
user=> (swap! aqueue into [2 3 4])
user=> (pprint @aqueue)
<-(1 2 3 4)-<

user=> (peek @aqueue)
1

user=> (pprint (pop @aqueue))
<-(2 3 4)-<

user=> (pprint @aqueue)
<-(1 2 3 4)-<

user=> (into [] @aqueue)
[1 2 3 4]

user=> (-> @aqueue rest (conj 5) pprint)
(5 2 3 4)

user=> (-> @aqueue pop (conj 5) pprint)
<-(2 3 4 5)-<