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

Reply via email to