<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for Sliding up the banister</title>
	<atom:link href="http://joelneely.wordpress.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://joelneely.wordpress.com</link>
	<description>Sneaking up on functional programming</description>
	<lastBuildDate>Mon, 17 Sep 2012 05:02:23 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on About by Martin Haeberli</title>
		<link>http://joelneely.wordpress.com/about/#comment-281</link>
		<dc:creator><![CDATA[Martin Haeberli]]></dc:creator>
		<pubDate>Mon, 17 Sep 2012 05:02:23 +0000</pubDate>
		<guid isPermaLink="false">#comment-281</guid>
		<description><![CDATA[Joel - it has been a long time since we hung out together with Dijkstra and Gries in Newport, RI.  Hope all is well.  I ran in to one of your StackOverflow posts today - small world, I think. - Martin]]></description>
		<content:encoded><![CDATA[<p>Joel &#8211; it has been a long time since we hung out together with Dijkstra and Gries in Newport, RI.  Hope all is well.  I ran in to one of your StackOverflow posts today &#8211; small world, I think. &#8211; Martin</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Lab Rat Code by joelneely</title>
		<link>http://joelneely.wordpress.com/2012/01/30/lab-rat-code/#comment-273</link>
		<dc:creator><![CDATA[joelneely]]></dc:creator>
		<pubDate>Sun, 15 Jul 2012 21:29:07 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=337#comment-273</guid>
		<description><![CDATA[You can lead a programmer to an idea, but you can&#039;t make him think.]]></description>
		<content:encoded><![CDATA[<p>You can lead a programmer to an idea, but you can&#8217;t make him think.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Lab Rat Code by Raja</title>
		<link>http://joelneely.wordpress.com/2012/01/30/lab-rat-code/#comment-261</link>
		<dc:creator><![CDATA[Raja]]></dc:creator>
		<pubDate>Fri, 17 Feb 2012 18:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=337#comment-261</guid>
		<description><![CDATA[What are you saying ? :-)]]></description>
		<content:encoded><![CDATA[<p>What are you saying ? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Don&#8217;t return null; use a tail call by Salsa Oudenaarde</title>
		<link>http://joelneely.wordpress.com/2010/04/17/dont-return-null-use-a-tail-call/#comment-254</link>
		<dc:creator><![CDATA[Salsa Oudenaarde]]></dc:creator>
		<pubDate>Sun, 29 Jan 2012 10:30:31 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=151#comment-254</guid>
		<description><![CDATA[I am so grateful for your article.Really thank you! Cool.]]></description>
		<content:encoded><![CDATA[<p>I am so grateful for your article.Really thank you! Cool.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Don&#8217;t return null; use a tail call by Gabriel Claramunt (@gclaramunt)</title>
		<link>http://joelneely.wordpress.com/2010/04/17/dont-return-null-use-a-tail-call/#comment-250</link>
		<dc:creator><![CDATA[Gabriel Claramunt (@gclaramunt)]]></dc:creator>
		<pubDate>Wed, 18 Jan 2012 12:45:30 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=151#comment-250</guid>
		<description><![CDATA[yes, after I wrote the comment, I&#039;ve realized that you don&#039;t care about the element itself.
Basically the callbacks are continuations, right? Interesting, is the first time I think about CPS in Java... doesn&#039;t look pretty but it can work  :)]]></description>
		<content:encoded><![CDATA[<p>yes, after I wrote the comment, I&#8217;ve realized that you don&#8217;t care about the element itself.<br />
Basically the callbacks are continuations, right? Interesting, is the first time I think about CPS in Java&#8230; doesn&#8217;t look pretty but it can work  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Don&#8217;t return null; use a tail call by Xavier Dury</title>
		<link>http://joelneely.wordpress.com/2010/04/17/dont-return-null-use-a-tail-call/#comment-249</link>
		<dc:creator><![CDATA[Xavier Dury]]></dc:creator>
		<pubDate>Thu, 12 Jan 2012 20:20:15 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=151#comment-249</guid>
		<description><![CDATA[Another benefit of using callbacks is that callbacks are executed in the context of the called method. If that method is transactional, your callback will be part of that transaction. This can be useful when loading a JPA entity for display: if you populate your UI controls inside the callback, you can totally avoid lazy-loading problems.

I wouldn&#039;t use callbacks everywhere but there are some situations where they can be really useful.]]></description>
		<content:encoded><![CDATA[<p>Another benefit of using callbacks is that callbacks are executed in the context of the called method. If that method is transactional, your callback will be part of that transaction. This can be useful when loading a JPA entity for display: if you populate your UI controls inside the callback, you can totally avoid lazy-loading problems.</p>
<p>I wouldn&#8217;t use callbacks everywhere but there are some situations where they can be really useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Don&#8217;t return null; use a tail call by joelneely</title>
		<link>http://joelneely.wordpress.com/2010/04/17/dont-return-null-use-a-tail-call/#comment-248</link>
		<dc:creator><![CDATA[joelneely]]></dc:creator>
		<pubDate>Thu, 12 Jan 2012 14:29:48 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=151#comment-248</guid>
		<description><![CDATA[I think we&#039;re looking at opposite sides of the coin. We agree that manually constructing in-line anonymous classes and boilerplate, worrying about stack overflow when making nested or recursive invocations, and other such details, are bothersome and a potential source of error.

I&#039;m simply speculating that in this area Java is too much like assembly code (including C). The explicit emphasis on passing around state-as-data and on implementation mechanisms often makes the underlying intent harder to express when writing the code and harder to see when reading it.]]></description>
		<content:encoded><![CDATA[<p>I think we&#8217;re looking at opposite sides of the coin. We agree that manually constructing in-line anonymous classes and boilerplate, worrying about stack overflow when making nested or recursive invocations, and other such details, are bothersome and a potential source of error.</p>
<p>I&#8217;m simply speculating that in this area Java is too much like assembly code (including C). The explicit emphasis on passing around state-as-data and on implementation mechanisms often makes the underlying intent harder to express when writing the code and harder to see when reading it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Don&#8217;t return null; use a tail call by joelneely</title>
		<link>http://joelneely.wordpress.com/2010/04/17/dont-return-null-use-a-tail-call/#comment-247</link>
		<dc:creator><![CDATA[joelneely]]></dc:creator>
		<pubDate>Thu, 12 Jan 2012 14:17:51 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=151#comment-247</guid>
		<description><![CDATA[First of all, I&#039;m not necessarily talking about errors. For example, absence of a particular key (e.g. in a hash map or database) may be a completely normal alternative.

In addition, I regard recovery/abandonment logic for a disruptive event (e.g. sudden inability to read from an opened file or socket) very differently from the normal workflow associated with a commonly occurring condition. To continue with the example, I would not want to express this concept:

&lt;blockquote&gt;If &lt;em&gt;X&lt;/em&gt; is in the data store,&lt;br /&gt;do action &lt;em&gt;Y&lt;/em&gt; on its associated data,&lt;br /&gt;otherwise do action &lt;em&gt;X&lt;/em&gt;.&lt;/blockquote&gt;

with the (more complex, to my eye) prescription:

&lt;blockquote&gt;Try to retrieve the data for &lt;em&gt;X&lt;/em&gt; from the data store.&lt;br /&gt;
Call that result &lt;em&gt;D&lt;/em&gt;.&lt;br /&gt;
Do action &lt;em&gt;Y&lt;/em&gt; on &lt;em&gt;D&lt;/em&gt;.&lt;br /&gt;
Oops; if you can&#039;t do the above,&lt;br /&gt;
Do action &lt;em&gt;Z&lt;/em&gt;.&lt;/blockquote&gt;

The run-time cost is much higher than &quot;normal&quot; invocation and control structures (the minor objection).

The extra &quot;noise code&quot; offers many more opportunities for error. Additionally, it creates clutter that the reader must parse, understand, and essentially ignore while trying to understand the underlying intent (the major objections).]]></description>
		<content:encoded><![CDATA[<p>First of all, I&#8217;m not necessarily talking about errors. For example, absence of a particular key (e.g. in a hash map or database) may be a completely normal alternative.</p>
<p>In addition, I regard recovery/abandonment logic for a disruptive event (e.g. sudden inability to read from an opened file or socket) very differently from the normal workflow associated with a commonly occurring condition. To continue with the example, I would not want to express this concept:</p>
<blockquote><p>If <em>X</em> is in the data store,<br />do action <em>Y</em> on its associated data,<br />otherwise do action <em>X</em>.</p></blockquote>
<p>with the (more complex, to my eye) prescription:</p>
<blockquote><p>Try to retrieve the data for <em>X</em> from the data store.<br />
Call that result <em>D</em>.<br />
Do action <em>Y</em> on <em>D</em>.<br />
Oops; if you can&#8217;t do the above,<br />
Do action <em>Z</em>.</p></blockquote>
<p>The run-time cost is much higher than &#8220;normal&#8221; invocation and control structures (the minor objection).</p>
<p>The extra &#8220;noise code&#8221; offers many more opportunities for error. Additionally, it creates clutter that the reader must parse, understand, and essentially ignore while trying to understand the underlying intent (the major objections).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Don&#8217;t return null; use a tail call by joelneely</title>
		<link>http://joelneely.wordpress.com/2010/04/17/dont-return-null-use-a-tail-call/#comment-246</link>
		<dc:creator><![CDATA[joelneely]]></dc:creator>
		<pubDate>Thu, 12 Jan 2012 13:52:05 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=151#comment-246</guid>
		<description><![CDATA[The Maybe monad is an option (pun intended :) ), but I&#039;d like to consider the possibility of not needing a returned value at all. I agree that Java doesn&#039;t make either approach easy (at this point in its life).]]></description>
		<content:encoded><![CDATA[<p>The Maybe monad is an option (pun intended <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), but I&#8217;d like to consider the possibility of not needing a returned value at all. I agree that Java doesn&#8217;t make either approach easy (at this point in its life).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Don&#8217;t return null; use a tail call by joelneely</title>
		<link>http://joelneely.wordpress.com/2010/04/17/dont-return-null-use-a-tail-call/#comment-245</link>
		<dc:creator><![CDATA[joelneely]]></dc:creator>
		<pubDate>Thu, 12 Jan 2012 13:49:39 +0000</pubDate>
		<guid isPermaLink="false">http://joelneely.wordpress.com/?p=151#comment-245</guid>
		<description><![CDATA[Thanks, Shawn; I agree with your assessment of the book.]]></description>
		<content:encoded><![CDATA[<p>Thanks, Shawn; I agree with your assessment of the book.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
