I'm pretty sure that sorted-set works only with values that are
instances of a class that implements Comparable.

user=> (instance? Comparable [])
true
user=> (instance? Comparable {})
false
user=> (instance? Comparable ())
false
user=>


On Feb 20, 2:21 pm, Frantisek Sodomka <fsodo...@gmail.com> wrote:
> sorted-set works for vectors, but doesn't work for lists, maps and
> sets:
> user=> (sorted-set [1 4])
> #{[1 4]}
> user=> (sorted-set [1 4] [1 4])
> #{[1 4]}
> user=> (sorted-set [4 1] [1 4])
> #{[1 4] [4 1]}
>
> user=> (sorted-set '(1 4))
> #{(1 4)}
> user=> (sorted-set '(1 4) '(1 4))
> java.lang.ClassCastException: clojure.lang.PersistentList cannot be
> cast to java.lang.Comparable (NO_SOURCE_FILE:0)
>
> user=> (sorted-set {:a 1 :b 2})
> #{{:a 1, :b 2}}
> user=> (sorted-set {:a 1 :b 2} {:a 1 :b 2})
> java.lang.ClassCastException: clojure.lang.PersistentArrayMap cannot
> be cast to java.lang.Comparable (NO_SOURCE_FILE:0)
>
> user=> (sorted-set #{1 2})
> #{#{1 2}}
> user=> (sorted-set #{1 2} #{1 2})
> java.lang.ClassCastException: clojure.lang.PersistentHashSet cannot be
> cast to java.lang.Comparable
> (NO_SOURCE_FILE:0)
>
> ---
> How does sorted-set know which value is bigger or smaller? Could this
> functionality be exported?
> user=> (sorted-set [4 3] [2 1])
> #{[2 1] [4 3]}
> user=> (> [4 3] [2 1])
> java.lang.ClassCastException: clojure.lang.LazilyPersistentVector
> cannot be cast to java.lang.Number (NO_SOURCE_FILE:0)
> user=> (= [4 3] [2 1])
> false
>
> user=> (> "xyz" "abc")
> java.lang.ClassCastException: java.lang.String cannot be cast to
> java.lang.Number (NO_SOURCE_FILE:0)
>
> Thank you, Frantisek
--~--~---------~--~----~------------~-------~--~----~
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
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