Re: idiomatic way of counting loop iteration

2016-09-12 Thread Timothy Baldridge
Also consider map-indexed if you just need to count how many things go through a lazy seq. It works like map, but takes a (fn [idx itm] ...) where idx is the index of the item in the overall seq. On Mon, Sep 12, 2016 at 3:10 PM, Gary Johnson wrote: > Almost right. The

Re: idiomatic way of counting loop iteration

2016-09-12 Thread Gary Johnson
Almost right. The iterate function is an infinite sequence generator, so (count (iterate f x)) will never return. If you want the iteration to terminate when cond is false (as in your original example), you're looking for this: (count (take-while cond (iterate (fn [[a b]] ... [new-a new-b])

Re: idiomatic way of counting loop iteration

2016-09-09 Thread Joeyjoejoe
Thanks for helping me! In your first example: (first (drop n (iterate (fn [[a b]] ... [new-a new-b] Given that iterate will return a sequence whose length is the number of iteration i'm looking for, the "(first (drop n" part will return one element of this sequence (depending on n value),

Re: idiomatic way of counting loop iteration

2016-09-09 Thread Joeyjoejoe
Thanks, i like the "unambiguous intent" argument from your post, and indeed i met the stack-overflow issue. On Friday, September 9, 2016 at 2:28:46 PM UTC+2, Stuart Sierra wrote: > > loop/recur is more typical for this kind of counting loop, as it avoids > the risk of a stack-overflow when the

Re: idiomatic way of counting loop iteration

2016-09-09 Thread Jason Felice
Generally speaking, `loop`, `recur`, and writing recursive functions are not idiomatic in Clojure. Using things like `iterate`, `map`, and `filter` are considered clearer. If `n` is used just to count iterations, then `iterate` would be useful. e.g. (first (drop n (iterate (fn [[a b]] ...

Re: idiomatic way of counting loop iteration

2016-09-09 Thread Stuart Sierra
loop/recur is more typical for this kind of counting loop, as it avoids the risk of a stack-overflow when the number of iterations is high. Also, I recommend against the [a b & [n]] argument pattern here: https://stuartsierra.com/2015/06/01/clojure-donts-optional-arguments-with-varargs –S On

idiomatic way of counting loop iteration

2016-09-09 Thread Joeyjoejoe
Hi, I'm just stating to learn clojure, i made a first read of "clojure programming" to get the big picture, and i'm starting to play with the repl, trying to solve some katas. A lot of theses katas involves returning the count of loop iterations. Most of the time, i end up with this kind of