Hi,

not sure if it works here, but what about adapting advice from Stuart
Halloway's Programming Clojure (pages 159-160, 'Losing your head') and
use a function returning a sequence instead of a 'bound by let' name
(the actual advice in the book is to use functions returning sequences
instead of vars holding the head)? This is basically a delayed
evaluation trick similar to your workaround with atoms.

On Fri, Nov 27, 2009 at 3:38 AM, David Brown <cloj...@davidb.org> wrote:
> On Thu, Nov 26, 2009 at 05:05:17PM -0800, David Brown wrote:
>>On Thu, Nov 26, 2009 at 04:00:34PM -0800, David Brown wrote:
>>
>>>For now, I'll do without the with-open, since in this particular case,
>>>errors are going to be fairly fatal anyway.
>>
>>BTW, I still haven't been able to figure out how to write this
>>function without hanging onto the collection across the call to
>>'write-mapping'.
>
> Ugh, I have found a very ugly hack that works.
>
> It seems that the compiler only nulls out locals before a call in the
> tail position, even if earlier calls don't reference the value any
> more.
>
> So, I went down in my call-chain to the first function that uses the
> sequence directly (in a doseq), and do something like this:
>
>   (let [real-coll @coll]
>     (swap! coll (constantly nil))
>     (doseq [item real-coll] ...))
>
> I just have to wrap the collection in an atom up where I create it,
> and make sure I never keep a reference to it around.
>
> David
>
> --
> 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



-- 
Miron Brezuleanu

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