RosettaCodeData/Task/Queue-Definition/Clojure/queue-definition.clj

14 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))