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

14 lines
252 B
Clojure
Raw Permalink Normal View History

2013-04-10 23:57:08 -07:00
(defn make-queue []
(atom []))
(defn enqueue [q x]
(swap! q conj x))
(defn dequeue [q]
2015-02-20 00:35:01 -05:00
(if-let [[f & r] (seq @q)]
(do (reset! q r) f)
2013-04-10 23:57:08 -07:00
(throw (IllegalStateException. "Can't pop an empty queue."))))
(defn queue-empty? [q]
(empty? @q))