After reading through the links that Chas provided, here's a summary of the
main points as I see them:

1.  Looking through the history of this issue, no one was actually asking
to be protected from accidentally typing duplicate keys in a map or set.

2.  People *were* asking to be protected from the fact that ArrayMap's
behavior was inconsistent with other maps, because this led to
unpredictability (since map literal notation would choose different
underlying implementations in a way that wasn't entirely transparent).

3.  Rich expressed that he wasn't sure the cost of a duplicate-key check
was worth it to fix this issue.

4.  Someone eventually decided it was worth the cost of a duplicate-key
check to fix the semantic mismatch between ArrayMaps and other maps, but
instead of using this check to bring ArrayMaps into concordance with other
maps, used the duplicate-key check to throw a hard error for a wide variety
(but not all) of maps and sets.

5.  This adds semantic complexity and breaks code, in surprising ways, at
run-time.  Not good.

6.  Solution: Put hash maps and hash sets back to the way they were -- they
worked perfectly fine.  Use the duplicate key check in ArrayMap to make
ArrayMaps behave like all the other maps, i.e., last instance of a key wins.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to