Duplicate keys in maps/sets are disallowed in literals and factory functions, 
where data is generally literal & inline and therefore likely represents coder 
error:

; all disallowed
#{:a :a}
{:a 1 :a 2}
(hash-map :a 1 :a 2)
(hash-set :a :a)

They are allowed in other contexts, where the data could come from anywhere:

; dumb, but these forms not generally called with a literal
(set [:a :a]) 
(into #{} [:a :a])

I find this behavior consistent and easy to explain, but I was involved in the 
design conversation so maybe I have participant blindness. :-)

Stu

> On Fri, 25 Jun 2010 15:36:31 +0200
> Michael Wood <esiot...@gmail.com> wrote:
> 
>> On 25 June 2010 12:27, Tim Robinson <tim.blacks...@gmail.com> wrote:
>>> I tried Clojure via Githhub today.
>>> 
>>> Anyone notice this bug that hadn't existed in Version 1.1
>>> 
>>> user=> #{:item1 {:a "A" :b "B"} :item2 {:a "A" :b "B"}}
>>> java.lang.IllegalArgumentException: Duplicate key: {:a "A", :b "B"}
>> 
>> You're trying to put duplicate values into a set.
> 
> So? Most places, putting a value that's already in a set into the set
> is a nop. Even in clojure that exhibits the above behavior:
> 
> user=> #{:a :a}
> java.lang.IllegalArgumentException: Duplicate key: :a
> user=> (set [:a :a])
> #{:a}
> user=> (conj #{:a} :a)
> #{:a}
> user=> 
> 
> Apparently, duplicate keys in sets are only disallowed in set
> literals. Arguably, that must be a mistake on the users part, but
> it sure seems to clash with the behavior of sets elsewhere.
> 
>     <mike
> -- 
> Mike Meyer <m...@mired.org>           http://www.mired.org/consulting.html
> Independent Network/Unix/Perforce consultant, email for more information.
> 
> O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
> 
> -- 
> 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

-- 
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