Okay, I was doing some quick experiments with conj today, and I
stumbled across the following behavior.  The first step works great.

user=> (conj {} [:a 1])
{:a 1}

Then I hit some different casting errors:
user=> (conj {} (seq [:a 1]))
#<CompilerException java.lang.ClassCastException: clojure.lang.Keyword
cannot be cast to java.util.Map$Entry (NO_SOURCE_FILE:...)>

user=> (conj {} '(:a 1))
#<CompilerException java.lang.ClassCastException: clojure.lang.Keyword
cannot be cast to java.util.Map$Entry (NO_SOURCE_FILE:...)>

This behavior becomes a pain when trying to use into:

;Good
user=> (into {} [[:a 1] [:b 2] [:c 3] [:d 4]])
{:a 1, :b 2, :c 3, :d 4}

;Bad
user=> (into {} (partition 2 [:a 1 :b 2 :c 3 :d 4]))
#<CompilerException java.lang.ClassCastException: clojure.lang.Keyword
cannot be cast to java.util.Map$Entry (NO_SOURCE_FILE:...)>

Is this a bug?  Should the conj method of APersistentMap be re-written
to cast a wider variety of stuff to a Map$Entry?  Or, is this just the
behavior of conj, and I should get used to it?

Sean

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