On Tue, Sep 13, 2011 at 2:39 AM, Michael Gardner <gardne...@gmail.com> wrote:
> On Sep 12, 2011, at 11:28 PM, Ken Wesson wrote:
>
>> But if, as you say, take, drop, etc. work for larger n, it should be
>> easy to make nth work with larger n and non-random-access seqs, just
>> by changing the non-random-access case to (first (drop n the-seq)).
>
> I'd be rather surprised if nth suddenly started giving linear performance on 
> arrays for large values of n. If nth can't be made to work in constant time 
> on arrays for n > 2**31, then I'd favor the IllegalArgumentException 
> approach. One can always do (first (drop …)) manually if linear performance 
> is acceptable.

It already gives log32 rather than constant time performance on
vectors, I think. That would stay the same. It can be extended to
sorted-set and sorted-map with log2 time performance, again including
with large-n support. On actual java.util collections and Java arrays
it can just check if n exceeds 2^31 - 1, give not-found behavior if
so, and otherwise punt to Java. And on non-random-access stuff it can
use (first (drop n thingy)).

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

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