Skip to content

Instantly share code, notes, and snippets.

@mpenet
Created February 10, 2014 07:58
Show Gist options
  • Save mpenet/8912003 to your computer and use it in GitHub Desktop.
Save mpenet/8912003 to your computer and use it in GitHub Desktop.

On the evilness of the clojure array-map and why you should avoid relying on its ordering:

user> (reduce #(assoc %1 %2 %2) (array-map) (range 10))
{0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9}

user> (reduce #(assoc %1 %2 %2) (array-map) (range 30))
{0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10, 11 11, 12 12, 13 13, 14 14, 15 15, 16 16, 17 17, 18 18, 19 19
, 20 20, 21 21, 22 22, 23 23, 24 24, 25 25, 26 26, 27 27, 28 28, 29 29}

user> (reduce #(assoc %1 %2 %2) (array-map) (range 33))
{0 0, 32 32, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10, 11 11, 12 12, 13 13, 14 14, 15 15, 16 16, 17 17, 18 18, 19 19, 20 20, 21 21, 22 22, 23 23, 24 24, 25 25, 26 26, 27 27, 28 28, 29 29, 30 30, 31 31}

same with merge/into/conj

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment