defrecord
我正在尝试在 Clojure中创建自己的不可变数据类型/方法。目标是拥有一个我可以创建实例的数据类型,然后调用它的方法来返回一个带有变异变量的新副本。假设 a 和 b 是向量。我想更新两者中的值并返回整个结构的新副本,其中更新了这些向量。这显然不能编译,我只是想表达我的想法。
(defrecord MyType [a b]
(constructor [N]
; I'd like to build an initial instance, creating a and b as vectors of length N
)
(mutate-and-return []
; I'd like to mutate (assoc the vectors) and return the new structure, a and b modified
)
)
我想调用构造函数,然后调用 mutator 任意多次(还有其他函数不会发生变异,但我不想让问题变得更复杂)。
或者,如果这不是惯用的 Clojure,你应该怎么做这样的事情?