Учитывая PersistentQueue в ссылке:
(def pq (ref clojure.lang.PersistentQueue/EMPTY))
Каков идиоматический способ открыть очередь и получить результат?
Моя лучшая попытка вашей критики :
(defn qpop [queue-ref]
(dosync
(let [item (peek @queue-ref)]
(alter queue-ref pop)
item))
alter возвращает текущее значение очереди, которая уже открыта, поэтому вы не можете просто выполнить изменение самостоятельно.