function
boot.janet on line 1623 , column 1
(update-in ds ks f & args )
Update a value in a nested data structure `ds` . Looks into `ds` via
a sequence of keys , and replaces the value found there with `f`
applied to that value. Missing data structures will be replaced
with tables. Returns the modified , original data structure.
(def ds @[@{:a 1 :b 2 }
@{:a 8 :b 9 }])
(defn thrice [x ] ( x 3 ))
(update-in ds [0 :b ] thrice )
# `ds` is now
@[@{:a 1 :b 6 }
@{:a 8 :b 9 }]
(defn ddup [ds ks val ]
(update-in ds ks
(fn [x ]
(if ( nil x )
@[val ]
(array/push x val )))))
(var a @{})
(ddup a [:a ] 1 )
(ddup a [:a ] 2 )
(ddup a [:a ] 3 )
# @{:a @[1 2 3]}
(update-in @{:a @{:b 1 }} [:a :b ] (fn [x ] ( 1 x )))
# @{:a @{:b 2}}
(update-in @{:a 1 } [:a ] (fn [x ] ( 1 x )))
# @{:a 2}