1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 23:28:02 +00:00
Files
til/clojure/swap-two-items-in-a-vector.md
2015-04-06 21:38:41 -05:00

798 B

Swap Two Items in a Vector

If you want to replace the value at an index in a vector, you can use the assoc function supplied by clojure.core like so:

> (assoc [5 6 7 8] 1 9)
; [5 9 7 8]

Likewise, if you want to replace two items in a vector, you can extend the above like so:

> (assoc [5 6 7 8] 1 2 2 4)
; [5 2 4 8]

We can take advantage of that second example to construct a function that will swap two values:

(defn swap
  [items i j]
  (assoc items i (items j) j (items i)))

This function will break on values of i and j that are out of the bounds of items, but dealing with that is left as an exercise to the reader.

source