Biorąc pod uwagę PersistentQueue w Ref:Jaki jest idiomatyczny sposób na wyrzucenie PersistentQueue w ref?
(def pq (ref clojure.lang.PersistentQueue/EMPTY))
Jaki jest idiomatyczne sposób pop kolejkę i uzyskać wynik?
Moja najlepsza próba dla krytyki:
(defn qpop [queue-ref]
(dosync
(let [item (peek @queue-ref)]
(alter queue-ref pop)
item))
Alter zwraca wartość w transakcję z kolejki, która jest już pojawiło, więc nie można po prostu zrobić alter sama.
Idiomatyczny do dodania do kolejki będzie: (dosync (alter pq conj new-item)) –