I'd guess that what you're seeing is related to chunked sequences: http://blog.fogus.me/2010/01/22/de-chunkifying-sequences-in-clojure/ .
On Sunday, March 17, 2013 1:12:17 AM UTC-7, bruce li wrote: > > Hello, everyone. I'm writing some code that utilizes the lazy sequence. > But I found something strange. Here is how: > > The code is like: > > (first (filter some-expensive-io urls)) > > The code is aimed to find the first result of the operations on the urls > that is not nil. However, it seems that the io operations are executed once > more than needed. As the operations are slow, one more round increases the > overhead dramatically. > > Then I tested other pieces of code, such as: > > (first (filter #(when (> % 1) (println %) %) (range))) > > It prints out: > 2 > 3 > 4 > 5 > 6 > 7 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 16 > 17 > 18 > 19 > 20 > 21 > 22 > 23 > 24 > 25 > 26 > 27 > 28 > 29 > 30 > 31 > > and returns: 2 > > So why the lazy sequence is realized more than it is needed? Could I > enforce the laziness and save unnecessary operation? > > > Thanks, > Bruce Li > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
