Ich versuche, die Best Practice der Clojure-Unveränderlichkeit zu verstehen, und ich habe dieses einfache Beispiel, wo ich immer wieder neue Befehle deklariere (update), aber ich bin mir nicht sicher, ob das richtig ist Weg.Clojure immutability practice
(defrecord Order [fplate splate])
(def new-orders clojure.lang.PersistentQueue/EMPTY)
(defn add-order [orders order]
(conj orders order))
(defn cook [order]())
(defn cook-order [orders]
(cook (first orders)) (pop orders))
;;order1
(def o1 (->Order "Soup" "Fish&Chips"))
(def new-orders (add-order new-orders o1))
;;order2
(def o2 (->Order "Salad" "Hamburger"))
(def new-orders (add-order new-orders o2))
;;order3
(def o3 (->Order "Rice" "Steak"))
(def new-orders (add-order new-orders o3))
;;cook order
(def new-orders (cook-order new-orders))
(peek new-orders)
Danke, R.
Vielleicht könnten Sie Atom https://clojure.org/reference/atoms benutzen? Siehe dieses verwandte Problem: https://stackoverflow.com/questions/8938330/clojure-swap-atom-dequeuing – netchkin