Thank you. doseq is probably more what I was looking for. I was thinking mapcar when I used map, but I really don't want the resulting seq anyway. I'll be a lot more careful about lazy evaluation, I'm just not used to it. Again thanks for your response.
On May 30, 8:55 pm, Timothy Pratley <timothyprat...@gmail.com> wrote: > Lazy evaluation strikes again! map doesn't actually do anything until > you force it eg with dorun. This is quite a common mistake! Does > anyone know how one would go able making a warning be printed when a > lazy seq is created and thrown away without any evaluation? I'd be > interested in implementing it with some pointers on where to start > (I've read quite a lot of the code-base but well I'm not a language > expert). > > To fix your problem: > > (let [b (new StringBuffer)] > (dorun (map #(.append b (str % " ")) ["blah" "blah" "blah"])) > b) > > I think it preferable to use doseq for side-effects: > (let [b (new StringBuffer)] > (doseq [s ["blah" "blah" "blah"]] (.append b (str s " ")) > b) > > Regards, > Tim. > > On May 31, 10:47 am, Ben <ben.he...@gmail.com> wrote: > > > I'm not sure if this is an issue or not. I broke it down to a simple > > case. When I pass a Java object into a map closure the object doesn't > > seem to get updated: > > > (let [b (new StringBuffer)] > > (map #(.. b (append (str % " "))) '("blah" "blah" "blah")) b) ;=> > > #<StringBuffer > > > > expected ;=> #<StringBuffer blah blah blah > > > > I know it's doing working within map because if I take the ending b > > off I get > > > (let [b (new StringBuffer)] > > (map #(.. b (append (str % " "))) '("blah" "blah" "blah"))) > > > ;=> (#<StringBuffer blah blah > #<StringBuffer blah blah blah > > > #<StringBuffer blah blah blah >) > > > any ideas? Is this a bug or is this how it's supposed to work? I > > realize there are better ways to do this, but I wanted to create a > > simplified example of what I was noticing. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---