Dipping my toes for the first time in Clojure.  Having some beginner
troubles.

THIS code works (on the repl, if that matters... also, Clojure 1.2):

(defn show [words]
        (let [word (first words)]
                (do
                        (println word)
                        (if (nil? word)
                                (println "DONE")
                                (recur (rest words))))))

(show '("some" "sample" "words"))

... this shows the 3 words, then DONE, and terminates.

But originally, I was trying to use loop/recur.  If I replace the
"let" with "loop" in the above code, it goes into an infinite loop.  I
assume there's something different in the scoping/binding rules with
loop, but I can't find a good explanation of what.  I read in
"Programming Clojure", regarding loop, that it "...works like let,
establishing bindings and then evaluating exprs..."

Noob Q#2: should I (and when) use "next" instead of "rest" on a seq?
a lazy seq?

Thanks!

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