consider this inside a reduce loop:
(if (contains? m k)
(update m k conj v)
(assoc m k [v]))
Is there a way to get rid of the if statement?
Use fnil to handle the nil value of v when k doesn't exist in the map:
(update m k (fnil conj []) v)
While the fnil answer is more spectacular, I find the following easier to read, especially if unfamiliar with fnil:
(assoc m k (conj (m k []) v))
where (m k []) returns the value of k in m or defaults to [] if k does not exist in m.
If k is a symbol, (k m []) would also work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With