Well, == should be =, but more importantly you're mixing up number and counter.
Step through your code one bit at a time: 1. You set number to 0 2. You set counter to (count coll) - 2 3. If number and counter are not equal... 4. Recur with the next part of the list, and set the counter to (+ number 1) See how you've got counter and number mixed up? - James On 6 May 2014 11:24, Roelof Wobben <rwob...@hotmail.com> wrote: > I changed everything to this : > > (ns forclojure.core) > (defn secondlast [coll] > (let [number 0 ] > (loop [coll coll counter (- (count coll)2)] > > (if (== counter number) > (first coll) > (recur (next coll) (+ number 1)))))) > > > But now I get a loop which never ends. > > Roelof > > > Op dinsdag 6 mei 2014 10:51:09 UTC+2 schreef Roelof Wobben: > >> >> >> Op dinsdag 6 mei 2014 10:43:40 UTC+2 schreef Benjamin R. Haskell: >>> >>> `loop` expects a vector of binding forms (with initial values), not just >>> a vector of names. >>> >>> (loop [coll counter] ; means there is one `loop` binding named >>> `coll`, with the initial value of `counter` >>> >>> To fix that problem directly: >>> >>> (loop [coll coll ; coll starts with an initial value of its >>> value outside the loop >>> counter counter] ; counter starts with an initial value of its >>> value outside the loop >>> ;; rest of code here ... >>> >>> Then you're left with an extra `let` (which was serving a similar >>> purpose to `loop` initialization?), and the whole `loop` is possibly >>> superfluous, because a function can be the target of a `recur`. >>> >>> >> oke, so I could do (loop [ coll coll counter 0] instead of the let ? >> And what do you mean with superfluous ?? >> >> Roelof >> >> -- > 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 > --- > 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 clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- 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 --- 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 clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.