Easy to explain - absolutely, consistent - mm, not really... I found this new behavior a bit confusing, imo it breaks principle of least surprise. This feature is uncommon in dynamic languages (even Scala allows duplicate keys - Set('a,'a)/Map('a->1,'a->1)).
Also, from the practical point of view, when prototyping: - repl: user>(some-fn #{1 ...}) ;just experiment here - file: #{"http://xyz" ...} ;bunch of statistical data In both cases occasional duplicate is not critical. However, one will be forced to spend extra time on input double-check and/or deal with error message(s). -anton On Jun 25, 5:31 pm, Stuart Halloway <stuart.hallo...@gmail.com> wrote: > 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