defrecordで定義されたデータ型があります。これには2つのベクトルが含まれています。
(defrecord MyType [a b])
(def mytype (->MyType [1 2 3] [4 5 6]))
関数に両方のベクトルを更新させ、新しいMyTypeを返したいです。それを行うために私が考えることができる唯一の方法は、ネストされたassoc呼び出しを介することです。
(defn mutate-mytype [mytype x y]
(assoc mytype :a (assoc (:a mytype) x y)
:b (assoc (:b mytype) x y)))
出力例:
user=> (mutate-mytype mytype 1 7)
#user.MyType{:a [1 7 3], :b [4 7 6]}
質問:そのmutate-mytypeメソッドを書くためのより良い方法はありますか?