<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
	>
<channel>
	<title>Comments on: Java&#8217;s Failure to be Lazy</title>
	<atom:link href="http://enfranchisedmind.com/blog/posts/javas-failure-to-be-lazy/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/posts/javas-failure-to-be-lazy/</link>
	<description>programming, politics, &#38; other religious issues</description>
	<lastBuildDate>Thu, 02 Feb 2012 19:11:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: Enfranchised Mind &#187; Java and Lazy Lists: I Stand Corrected (Sort Of)</title>
		<link>http://enfranchisedmind.com/blog/posts/javas-failure-to-be-lazy/#comment-2372</link>
		<dc:creator>Enfranchised Mind &#187; Java and Lazy Lists: I Stand Corrected (Sort Of)</dc:creator>
		<pubDate>Tue, 06 Feb 2007 17:10:34 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/01/02/180#comment-2372</guid>
		<description>[...] If you&#8217;re not sure what I&#8217;m babbling about, check out this post for an introduction to lazy lists in their natural environment, and this post for my railing about Java&#8217;s lack of lazy lists.       You can also bookmark this on del.icio.us or check the cosmos [...]</description>
		<content:encoded><![CDATA[<p>[...] If you&#8217;re not sure what I&#8217;m babbling about, check out this post for an introduction to lazy lists in their natural environment, and this post for my railing about Java&#8217;s lack of lazy lists.       You can also bookmark this on del.icio.us or check the cosmos [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Candide</title>
		<link>http://enfranchisedmind.com/blog/posts/javas-failure-to-be-lazy/#comment-1199</link>
		<dc:creator>Candide</dc:creator>
		<pubDate>Fri, 05 Jan 2007 18:14:45 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/01/02/180#comment-1199</guid>
		<description>To Gafter:
Right -- so Java&#039;s completely failed to be lazy, but there&#039;s some people out there who would like to introduce things that would make it &lt;em&gt;easier&lt;/em&gt; to be lazy.  Granted.  That doesn&#039;t change the fact that it&#039;s just fallen apart right now.

Maybe someday it&#039;ll catch up -- but my guess is that you won&#039;t really see it until F#, Ocaml, or Haskell break their way into business.  We &lt;em&gt;may&lt;/em&gt; be lucky, and Sun may be looking at some of the quasi-functional stuff in Ruby, but I doubt that.
 
To BHurt:
Yeah, I&#039;ve personally encountered that situation.  I actually feel kind of bad, because some of the stuff that I treat as natural (&lt;a href=&quot;http://enfranchisedmind.com/blog/archive/2005/12/16/39&quot; rel=&quot;nofollow&quot;&gt;e.g.&lt;/a&gt;) the people at my last contract are completely baffled by.  They keep saying things like &quot;He should have a Ph.D. for this kind of stuff.&quot;, which is far from true -- it&#039;s pretty clear what&#039;s going on, as long as you&#039;re used to functional styles of development.</description>
		<content:encoded><![CDATA[<p>To Gafter:<br />
Right &#8212; so Java&#8217;s completely failed to be lazy, but there&#8217;s some people out there who would like to introduce things that would make it <em>easier</em> to be lazy.  Granted.  That doesn&#8217;t change the fact that it&#8217;s just fallen apart right now.</p>
<p>Maybe someday it&#8217;ll catch up &#8212; but my guess is that you won&#8217;t really see it until F#, Ocaml, or Haskell break their way into business.  We <em>may</em> be lucky, and Sun may be looking at some of the quasi-functional stuff in Ruby, but I doubt that.</p>
<p>To BHurt:<br />
Yeah, I&#8217;ve personally encountered that situation.  I actually feel kind of bad, because some of the stuff that I treat as natural (<a href="http://enfranchisedmind.com/blog/archive/2005/12/16/39" rel="nofollow">e.g.</a>) the people at my last contract are completely baffled by.  They keep saying things like &#8220;He should have a Ph.D. for this kind of stuff.&#8221;, which is far from true &#8212; it&#8217;s pretty clear what&#8217;s going on, as long as you&#8217;re used to functional styles of development.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bhurt-aw</title>
		<link>http://enfranchisedmind.com/blog/posts/javas-failure-to-be-lazy/#comment-1197</link>
		<dc:creator>bhurt-aw</dc:creator>
		<pubDate>Fri, 05 Jan 2007 02:03:07 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/01/02/180#comment-1197</guid>
		<description>15 years or so ago, when OO was just starting to become popular, a programmer aquiantance of mine stated that he hated OO programs, because they were impossible to follow the flow of control in.  This was especially the case in OO programs written in procedural languages (yes, Virginia, you can write OO programs in C, I have), where the implementation details can obscure the fundamental patterns.  An experienced OO coder would immediately start recognizing the patterns- this is inheritance, that&#039;s a virtual function, this whole structure is actually a class, specifically it&#039;s a decorator, etc.  But he didn&#039;t know the design patterns, and thus OO programming to him was an undifferentiated mess of function pointers and unmaintainable code.

Now, there&#039;s a point to this story, and the point is this: if the paradigm isn&#039;t understood, the likelyhood is that the program won&#039;t be understood either, nor appreciated.  Nor maintained.

Nothing I&#039;m describing here is actually that hard to implement in Java.  OK, there are some rought edges, and implementation details will show through, but technically it&#039;s not that hard.  But ask yourself this question: if you implemented a lazily evaluated list, with lazily evaluated maps and filters etc., and then implemented Newton&#039;s method as an infinite list- what would the average Java programmer&#039;s response be?  Remember that this design pattern in unusual for &lt;EM&gt;Ocaml&lt;/EM&gt; programmers (although it&#039;d be medium-obvious for Haskell programmers, I think).</description>
		<content:encoded><![CDATA[<p>15 years or so ago, when OO was just starting to become popular, a programmer aquiantance of mine stated that he hated OO programs, because they were impossible to follow the flow of control in.  This was especially the case in OO programs written in procedural languages (yes, Virginia, you can write OO programs in C, I have), where the implementation details can obscure the fundamental patterns.  An experienced OO coder would immediately start recognizing the patterns- this is inheritance, that&#8217;s a virtual function, this whole structure is actually a class, specifically it&#8217;s a decorator, etc.  But he didn&#8217;t know the design patterns, and thus OO programming to him was an undifferentiated mess of function pointers and unmaintainable code.</p>
<p>Now, there&#8217;s a point to this story, and the point is this: if the paradigm isn&#8217;t understood, the likelyhood is that the program won&#8217;t be understood either, nor appreciated.  Nor maintained.</p>
<p>Nothing I&#8217;m describing here is actually that hard to implement in Java.  OK, there are some rought edges, and implementation details will show through, but technically it&#8217;s not that hard.  But ask yourself this question: if you implemented a lazily evaluated list, with lazily evaluated maps and filters etc., and then implemented Newton&#8217;s method as an infinite list- what would the average Java programmer&#8217;s response be?  Remember that this design pattern in unusual for <em>Ocaml</em> programmers (although it&#8217;d be medium-obvious for Haskell programmers, I think).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Neal Gafter</title>
		<link>http://enfranchisedmind.com/blog/posts/javas-failure-to-be-lazy/#comment-1196</link>
		<dc:creator>Neal Gafter</dc:creator>
		<pubDate>Thu, 04 Jan 2007 23:11:49 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/01/02/180#comment-1196</guid>
		<description>Candide: the only reason that java.util.Iterator might not be thought of as a lazy list (according to BHurt) is that the map/reduce/transform (etc) operations take List instead of Iterator, and don&#039;t operate lazily... but wait a sec, those operations don&#039;t exist in Java yet!  We&#039;ll be adding them (I hope) along with closures.  So when we add them we can ensure that they (or versions of them) operate properly on lazy data structures, returning lazy data structures in return.

Thus my original answer.</description>
		<content:encoded><![CDATA[<p>Candide: the only reason that java.util.Iterator might not be thought of as a lazy list (according to BHurt) is that the map/reduce/transform (etc) operations take List instead of Iterator, and don&#8217;t operate lazily&#8230; but wait a sec, those operations don&#8217;t exist in Java yet!  We&#8217;ll be adding them (I hope) along with closures.  So when we add them we can ensure that they (or versions of them) operate properly on lazy data structures, returning lazy data structures in return.</p>
<p>Thus my original answer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Candide</title>
		<link>http://enfranchisedmind.com/blog/posts/javas-failure-to-be-lazy/#comment-1187</link>
		<dc:creator>Candide</dc:creator>
		<pubDate>Wed, 03 Jan 2007 16:25:02 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/01/02/180#comment-1187</guid>
		<description>My brain reads those closures precisely backwards, because of the syntax of Ocaml, but that&#039;s not something I&#039;d expect Java developers to care about.  I am surprised, though, that they didn&#039;t pick up something like C#&#039;s function pointer syntax -- that&#039;s a lot more concise.

That all said, it&#039;d be kinda nice to have something like this in play.</description>
		<content:encoded><![CDATA[<p>My brain reads those closures precisely backwards, because of the syntax of Ocaml, but that&#8217;s not something I&#8217;d expect Java developers to care about.  I am surprised, though, that they didn&#8217;t pick up something like C#&#8217;s function pointer syntax &#8212; that&#8217;s a lot more concise.</p>
<p>That all said, it&#8217;d be kinda nice to have something like this in play.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic page generated in 1.793 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-05 06:40:07 -->
<!-- Compression = gzip -->
