Каков идиоматический способ вставить PersistentQueue в ссылку?

Учитывая PersistentQueue в ссылке:

(def pq (ref clojure.lang.PersistentQueue/EMPTY))

Каков идиоматический способ открыть очередь и получить результат?

Моя лучшая попытка вашей критики :

(defn qpop [queue-ref]
    (dosync 
        (let [item (peek @queue-ref)]
          (alter queue-ref pop)
          item))

alter возвращает текущее значение очереди, которая уже открыта, поэтому вы не можете просто выполнить изменение самостоятельно.

12
задан Alex Miller 3 February 2011 в 19:59
поделиться