Clojureの不変性のベストプラクティスを理解しようとしていますが、私は常に新しい注文を再宣言(更新)するこの簡単な例がありますが、これが正しいかどうかわかりません方法。Clojure不変性練習
(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)
おかげで、 R.
はおそらく、あなたが原子https://clojure.org/reference/atomsを使用することができますか?この関連する問題を参照してください:https://stackoverflow.com/questions/8938330/clojure-swap-atom-dequeuing – netchkin