Say I have this sorted map, using strings as keys:

x=> (sorted-map "ab" 1 "n" 2)
{"ab" 1, "n" 2}

When I do a subseq

x=> (subseq (sorted-map "ab" 1 "n" 2) > "aa")
(["ab" 1] ["n" 2])

I get back both entries.

Now if I do the same subseq on the same map, except that I turn all
strings into character collections, I only get the "ab" entry:

x=> (subseq (sorted-map (vec "ab") 1 (vec "n") 2) > (vec "aa"))
([[\a \b] 1])

I guess that's fine, the length of collections is probably used first
and only if it differs would the actual entries be compared.

Using my own comparator to simulate the string comparison I can get
the string-like behavior:

(defn string-like-coll-comparator
    [coll1 coll2]
    (first (drop-while zero? (map compare coll1 coll2))))

x=> (subseq (sorted-map-by string-like-coll-comparator (vec "ab") 1
(vec "n") 2) > (vec "aa"))
([[\a \b] 1] [[\n] 2])

Here's my question - is this the best way to get what I want?

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