13 lines
252 B
Clojure
13 lines
252 B
Clojure
(defn make-queue []
|
|
(atom []))
|
|
|
|
(defn enqueue [q x]
|
|
(swap! q conj x))
|
|
|
|
(defn dequeue [q]
|
|
(if-let [[f & r] (seq @q)]
|
|
(do (reset! q r) f)
|
|
(throw (IllegalStateException. "Can't pop an empty queue."))))
|
|
|
|
(defn queue-empty? [q]
|
|
(empty? @q))
|