<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Writing a macro: for vs. doseq</title>
	<atom:link href="http://blog.n01se.net/?feed=rss2&#038;p=33" rel="self" type="application/rss+xml" />
	<link>http://blog.n01se.net/?p=33</link>
	<description>theoretically unambiguous</description>
	<lastBuildDate>Sun, 29 Aug 2010 20:06:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Chouser</title>
		<link>http://blog.n01se.net/?p=33&#038;cpage=1#comment-1230</link>
		<dc:creator>Chouser</dc:creator>
		<pubDate>Fri, 03 Jul 2009 03:31:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.n01se.net/?p=33#comment-1230</guid>
		<description>Maybe the best way to understand how it works is to realize that a lazy seq
mutates internally.

Each step of a lazy seq starts as a closure that knows how to compute a cons
cell (first and rest).  When you ask for either, that closure is called and its
return value is cached.  Next time that first or test is called, the cached
value is returned.

So as long as you refer only to parts of the seq that have already been realized
and cached, nothing has to recurse at that point.

And that&#039;s what happens with &#039;fibs&#039; -- each element is computed only from
earlier elements -- all the way back to the [0 1] constants.</description>
		<content:encoded><![CDATA[<p>Maybe the best way to understand how it works is to realize that a lazy seq<br />
mutates internally.</p>
<p>Each step of a lazy seq starts as a closure that knows how to compute a cons<br />
cell (first and rest).  When you ask for either, that closure is called and its<br />
return value is cached.  Next time that first or test is called, the cached<br />
value is returned.</p>
<p>So as long as you refer only to parts of the seq that have already been realized<br />
and cached, nothing has to recurse at that point.</p>
<p>And that&#8217;s what happens with &#8216;fibs&#8217; &#8212; each element is computed only from<br />
earlier elements &#8212; all the way back to the [0 1] constants.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Glen Stampoultzis</title>
		<link>http://blog.n01se.net/?p=33&#038;cpage=1#comment-1229</link>
		<dc:creator>Glen Stampoultzis</dc:creator>
		<pubDate>Mon, 29 Jun 2009 06:44:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.n01se.net/?p=33#comment-1229</guid>
		<description>This line is just spinning me out:

(def fibs (lazy-cat [0 1] (map + fibs (rest fibs))))

Is that def just refering to itself?!  How does that work?</description>
		<content:encoded><![CDATA[<p>This line is just spinning me out:</p>
<p>(def fibs (lazy-cat [0 1] (map + fibs (rest fibs))))</p>
<p>Is that def just refering to itself?!  How does that work?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.301 seconds -->
