Re: faster flatten?

2010-07-15 Thread Cam
You're right about rest, I didn't see that rest should be preferred to next when consuming seqs in this style. I agree that flatten returning the empty list for some of the things that actually can be seqed is odd. I'm sure there's a good reason somewhere, but it's not to hard to change by just

Re: faster flatten?

2010-07-14 Thread miner
I think it's worthwhile to have a faster flatten even if it doesn't look as elegant as the current implementation. You could do a bit of refactoring and save yourself a call to sequential? since the recursive calls are guaranteed to have seqs (as a result of next). Also, I'd prefer flatten

Re: faster flatten?

2010-07-14 Thread Cam
suggestion: (defn fl1 faster flatten [coll]   (letfn [(flcoll [coll]                  (lazy-seq                   (when-let [c (seq coll)]                     (let [x (first c)                           nxt (flcoll (next c))]                       (if (sequential? x

Re: faster flatten?

2010-07-14 Thread Steve Miner
On Jul 14, 2010, at 2:40 PM, Cam wrote: I definitely like this version a little better. If you change the else of the if to be just (list), it returns the empty list just as core/ flatten does. Mind if I update the ticket with this patch? It's all yours. Really, just a slight change from

Re: faster flatten?

2010-07-13 Thread Stuart Halloway
Hi Cam, Your tests aren't testing the interesting part without a doall. That said, my quick tests with doall show your approach faring even better. :-) Also, I think what my-flatten does with Java arrays is intuitive (and the current flatten not so much). A patch that preserves the semantics

Re: faster flatten?

2010-07-13 Thread Cam
Hi Stuart, Thanks for checking that out for me! Sorry for not realizing in the first place. I of course would be happy to submit a patch. Should I submit that here or over on the assembla page? On Jul 13, 9:10 am, Stuart Halloway stuart.hallo...@gmail.com wrote: Hi Cam, Your tests aren't

Re: faster flatten?

2010-07-13 Thread Stuart Halloway
Hi Cam, The full instructions for joining the team and then submitting a patch are at [1] an [2], but in short: * send in a CA * join the Assembla space under you real name * post a patch there linking to this thread Thanks! Stu [1] http://clojure.org/contributing [2]

Re: faster flatten?

2010-07-13 Thread Cam
Hi again, I modified my-flatten to return the empty list for sets and maps as core/flatten does. It doesn't seem to handle Arrays anymore though. I'm assuming it's because ArrayList and (int-array ...) don't implement Sequential. None the less should I still submit this modified version that

Re: faster flatten?

2010-07-13 Thread Stuart Halloway
Hi Cam, Please submit the modified version, and, if you want, create a separate ticket for seqable?. I would like to review the latter separately. Stu Hi again, I modified my-flatten to return the empty list for sets and maps as core/flatten does. It doesn't seem to handle Arrays anymore

Re: faster flatten?

2010-07-13 Thread Cam
OK, all submitted. The tickets are up for discussion at http://www.assembla.com/spaces/clojure/support/tickets/400-a-faster-flatten http://www.assembla.com/spaces/clojure/support/tickets/401-promote--seqable---from-contrib- I will mail my CA in tomorrow morning. Thanks Stu and Mark! On Jul 13

faster flatten?

2010-07-12 Thread Cam
Another flatten thread! Sorry.. Hello all, before I realized there was a flatten in the master branch (and before I looked at contrib) I wrote this pretty standard code: (defn my-flatten [coll] (lazy-seq (when-let [coll (seq coll)] (let [x (first coll)] (if (sequential? x)

Re: faster flatten?

2010-07-12 Thread Mark Engelberg
Unless you wrap a doall around the calls to flatten and my-flatten, you're not really timing anything relevant. -- 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