<?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: Thinking About Haskell*: You Know Lazy Evaluation; You Just Don&#8217;t Know It</title>
	<atom:link href="http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/</link>
	<description>Hackfoofery</description>
	<lastBuildDate>Wed, 23 Feb 2011 00:34:59 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: alson</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-27</link>
		<dc:creator>alson</dc:creator>
		<pubDate>Wed, 17 Dec 2008 05:49:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-27</guid>
		<description>&lt;p&gt;Cale,&lt;/p&gt;

&lt;p&gt;&quot;That&#039;ll teach me to put in code I haven&#039;t tested in ghci...&quot; Take 2!  Fixed.&lt;/p&gt;

&lt;p&gt;This little post just keeps on giving...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alson&lt;/li&gt;
&lt;/ul&gt;
</description>
		<content:encoded><![CDATA[<p>Cale,</p>

<p>&#8220;That&#8217;ll teach me to put in code I haven&#8217;t tested in ghci&#8230;&#8221; Take 2!  Fixed.</p>

<p>This little post just keeps on giving&#8230;</p>

<ul>
<li>Alson</li>
</ul>]]></content:encoded>
	</item>
	<item>
		<title>By: Cale</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-26</link>
		<dc:creator>Cale</dc:creator>
		<pubDate>Wed, 17 Dec 2008 03:25:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-26</guid>
		<description>&lt;p&gt;Just a note: $! is unfortunately not left associative, but right associative, so that last example won&#039;t work, you have to write&lt;/p&gt;

&lt;p&gt;f a b c = ((g $! a) $! b) $! c&lt;/p&gt;

&lt;p&gt;(also, you had the f being recursive there, which probably wasn&#039;t what you&#039;d intended)&lt;/p&gt;

&lt;p&gt;I&#039;d like to change $ and $! to be left associative like function application normally is for this, and a few other reasons.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Just a note: $! is unfortunately not left associative, but right associative, so that last example won&#8217;t work, you have to write</p>

<p>f a b c = ((g $! a) $! b) $! c</p>

<p>(also, you had the f being recursive there, which probably wasn&#8217;t what you&#8217;d intended)</p>

<p>I&#8217;d like to change $ and $! to be left associative like function application normally is for this, and a few other reasons.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: alson</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-23</link>
		<dc:creator>alson</dc:creator>
		<pubDate>Tue, 16 Dec 2008 17:08:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-23</guid>
		<description>&lt;p&gt;Andreas,&lt;/p&gt;

&lt;p&gt;I tried to make note of that, but didn&#039;t do a great job.  Adding more words...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alson&lt;/li&gt;
&lt;/ul&gt;
</description>
		<content:encoded><![CDATA[<p>Andreas,</p>

<p>I tried to make note of that, but didn&#8217;t do a great job.  Adding more words&#8230;</p>

<ul>
<li>Alson</li>
</ul>]]></content:encoded>
	</item>
	<item>
		<title>By: alson</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-22</link>
		<dc:creator>alson</dc:creator>
		<pubDate>Tue, 16 Dec 2008 16:52:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-22</guid>
		<description>&lt;p&gt;Luke, Josef, Asger,&lt;/p&gt;

&lt;p&gt;Agreed.  That&#039;ll teach me to put in code that I haven&#039;t tested in ghci...  Fixed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alson&lt;/li&gt;
&lt;/ul&gt;
</description>
		<content:encoded><![CDATA[<p>Luke, Josef, Asger,</p>

<p>Agreed.  That&#8217;ll teach me to put in code that I haven&#8217;t tested in ghci&#8230;  Fixed.</p>

<ul>
<li>Alson</li>
</ul>]]></content:encoded>
	</item>
	<item>
		<title>By: alson</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-21</link>
		<dc:creator>alson</dc:creator>
		<pubDate>Tue, 16 Dec 2008 16:49:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-21</guid>
		<description>&lt;p&gt;Worthless,&lt;/p&gt;

&lt;p&gt;
  In terms of &quot;Thinking about Haskell&quot;, seeing &#039;&amp;&amp;&#039; as lazy has helped me think about Haskell.  Laziness can be pretty rough to grapple with and I thought that people would appreciate the &#039;&amp;&amp;&#039; example as a lazy-ish thing they&#039;ve used lots of time.&lt;/p&gt;

&lt;p&gt;Besides, I&#039;m a little confused by your comment that &#039;&amp;&amp;&#039; isn&#039;t lazy.  From the HaskellWiki:&lt;/p&gt;

&lt;p&gt;&quot;Lazy evaluation causes that expressions are not evaluated when they are bound to variables, but their evaluation is deferred until their results are needed by other computations.&quot;&lt;/p&gt;

&lt;p&gt;&#039;&amp;&amp;&#039;, whether in C# or Haskell, seems to fit that description.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alson&lt;/li&gt;
&lt;/ul&gt;
</description>
		<content:encoded><![CDATA[<p>Worthless,</p>

<p>
  In terms of &#8220;Thinking about Haskell&#8221;, seeing &#8216;&amp;&amp;&#8217; as lazy has helped me think about Haskell.  Laziness can be pretty rough to grapple with and I thought that people would appreciate the &#8216;&amp;&amp;&#8217; example as a lazy-ish thing they&#8217;ve used lots of time.</p>

<p>Besides, I&#8217;m a little confused by your comment that &#8216;&amp;&amp;&#8217; isn&#8217;t lazy.  From the HaskellWiki:</p>

<p>&#8220;Lazy evaluation causes that expressions are not evaluated when they are bound to variables, but their evaluation is deferred until their results are needed by other computations.&#8221;</p>

<p>&#8216;&amp;&amp;&#8217;, whether in C# or Haskell, seems to fit that description.</p>

<ul>
<li>Alson</li>
</ul>]]></content:encoded>
	</item>
	<item>
		<title>By: alson</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-20</link>
		<dc:creator>alson</dc:creator>
		<pubDate>Tue, 16 Dec 2008 16:42:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-20</guid>
		<description>&lt;p&gt;Roman,  Argh!  Fixed.  - Alson&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Roman,  Argh!  Fixed.  &#8211; Alson</p>]]></content:encoded>
	</item>
	<item>
		<title>By: worthless</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-19</link>
		<dc:creator>worthless</dc:creator>
		<pubDate>Tue, 16 Dec 2008 14:06:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-19</guid>
		<description>&lt;p&gt;GHCi&gt; case undefined of _ -&gt; &quot;test&quot;
&quot;test&quot;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>GHCi&gt; case undefined of _ -&gt; &#8220;test&#8221;
&#8220;test&#8221;</p>

<p>&#8230;</p>]]></content:encoded>
	</item>
	<item>
		<title>By: worthless</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-18</link>
		<dc:creator>worthless</dc:creator>
		<pubDate>Tue, 16 Dec 2008 14:05:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-18</guid>
		<description>&lt;p&gt;&quot;if ( (obj != null) &amp;&amp; (obj.someMethod() == somethingElse) ) {&quot;
This is not lazy evaluation, this is sequential and conditional execution.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>&#8220;if ( (obj != null) &amp;&amp; (obj.someMethod() == somethingElse) ) {&#8221;
This is not lazy evaluation, this is sequential and conditional execution.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: augustss</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-17</link>
		<dc:creator>augustss</dc:creator>
		<pubDate>Tue, 16 Dec 2008 13:44:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-17</guid>
		<description>&lt;p&gt;Actually, using case like that doesn&#039;t evaluate anything.  The case expression evaluates exactly as much as it has to make sure the pattern matches.  And since _ matches everything then nothing is evaluated.  You need to use the (non-lambda-definable) seq function to evaluate arbitrary values.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Actually, using case like that doesn&#8217;t evaluate anything.  The case expression evaluates exactly as much as it has to make sure the pattern matches.  And since _ matches everything then nothing is evaluated.  You need to use the (non-lambda-definable) seq function to evaluate arbitrary values.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Josef Svenningsson</title>
		<link>http://www.alsonkemp.com/haskell/thinking-about-haskell-you-know-lazy-evaluation-you-just-dont-know-it/comment-page-1/#comment-16</link>
		<dc:creator>Josef Svenningsson</dc:creator>
		<pubDate>Tue, 16 Dec 2008 13:20:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.alsonkemp.com/?p=110#comment-16</guid>
		<description>&lt;p&gt;Your last example is wrong. A case that doesn&#039;t use it&#039;s result will not force the thunk being cased. Use bang patterns or deepSeq instead.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Your last example is wrong. A case that doesn&#8217;t use it&#8217;s result will not force the thunk being cased. Use bang patterns or deepSeq instead.</p>]]></content:encoded>
	</item>
</channel>
</rss>

