Quite a frequent occurrence, welcome to the club!

One simple check that the Clojure compiler could make is to produce a
warning if any lazy result is discarded. I think that would catch 90%
of the problems and give the user an immediate clue what to
investigate. Well it sounds simple, but I have no idea where to start
implementing it.

To me the big win of laziness is dealing with large collections, which
would otherwise break.

Regards,
Tim.




On Mar 2, 4:06 pm, max3000 <maxime.lar...@gmail.com> wrote:
> Hi,
>
> I find the laziness in clojure very hard to wrap my head around. I
> understand the idea and it's probably nice in theory. However, in real
> life it doesn't seem really useful beyond hardcore mathematical
> problems.
>
> Case in point, I just spent 2 hours debugging a piece of code (shown
> below) that seemed simple enough. This is the 3rd time this week that
> I've lost substantial time to laziness. I'm pretty pissed to tell the
> truth and I find myself wrapping things in doseq more and more just to
> be sure. I rarely use 'for' anymore, what's the point?
>
> Here is the code that gave me trouble:
>
>     (map #(add-watch % watcher callback-fn) all-agents)
>
> This was not executing. I had to change it to the below expression:
>
>     (doseq [agent all-labor-agents]
>       (add-watch agent total-labor-agent callback-fn))
>
> This second expression seems less elegant than the map above. Why
> doesn't clojure realize that an add-watch really should actually loop
> over all-agents? Why is it that Java calls are not made in similar
> expressions?
>
> Is laziness so useful that we should waste time investigating and
> fixing errors like this? Sure, there could be special constructs for
> laziness when we really need it. However, clojure shouldn't default to
> it IMO. At this point, laziness is a nice concept but it feels
> somewhat removed from reality to tell the truth. Of course I want to
> iterate over my collection when I'm doing an add-watch!
>
> What am I missing?
>
> Thanks,
>
> Max
--~--~---------~--~----~------------~-------~--~----~
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
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