<?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 on: Lazy Error Handling in Java, Part 2: Thrower is a Monad</title>
	<atom:link href="http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/feed/" rel="self" type="application/rss+xml" />
	<link>http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/</link>
	<description>The end of programming as you know it</description>
	<lastBuildDate>Fri, 06 Nov 2009 19:54:51 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: apocalisp</title>
		<link>http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/#comment-368</link>
		<dc:creator>apocalisp</dc:creator>
		<pubDate>Sat, 09 May 2009 07:09:08 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=14#comment-368</guid>
		<description>Raoul,

The final keyword is used for several reasons, like you said.

1. To help enforce referential transparency by disallowing assignment to pseudovariables (all fields are final).
2. To avoid what you call &quot;think-o&quot; bugs where you assign to a variable or argument (all method parameters and local variables final).
3. To improve encapsulation by disallowing inheritance (classes are final).
4. To facilitate closure. An inner scope (anonymous instance, for example) may not close over a variable that isn&#039;t final.</description>
		<content:encoded><![CDATA[<p>Raoul,</p>
<p>The final keyword is used for several reasons, like you said.</p>
<p>1. To help enforce referential transparency by disallowing assignment to pseudovariables (all fields are final).<br />
2. To avoid what you call &#8220;think-o&#8221; bugs where you assign to a variable or argument (all method parameters and local variables final).<br />
3. To improve encapsulation by disallowing inheritance (classes are final).<br />
4. To facilitate closure. An inner scope (anonymous instance, for example) may not close over a variable that isn&#8217;t final.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raoul Duke</title>
		<link>http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/#comment-367</link>
		<dc:creator>Raoul Duke</dc:creator>
		<pubDate>Fri, 08 May 2009 23:58:02 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=14#comment-367</guid>
		<description>off topic: i know there are various reasons for using &#039;final&#039; in java. you seem to use it a lot more than most folks. what are your reasons for it?

in particular, in the examples above when you make the return value + parameters to a function &#039;final&#039;, why are you doing that?

(the general reasons for using &#039;final&#039; i know of are: it cuts down the chances of think-o bugs; it can allow more optimizations to happen; it can be useful for &#039;security&#039; of a fashion. those general statements map down to more concrete things depending on where &#039;final&#039; is actually used.)

thanks.</description>
		<content:encoded><![CDATA[<p>off topic: i know there are various reasons for using &#8216;final&#8217; in java. you seem to use it a lot more than most folks. what are your reasons for it?</p>
<p>in particular, in the examples above when you make the return value + parameters to a function &#8216;final&#8217;, why are you doing that?</p>
<p>(the general reasons for using &#8216;final&#8217; i know of are: it cuts down the chances of think-o bugs; it can allow more optimizations to happen; it can be useful for &#8217;security&#8217; of a fashion. those general statements map down to more concrete things depending on where &#8216;final&#8217; is actually used.)</p>
<p>thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Captain Oblivious</title>
		<link>http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/#comment-336</link>
		<dc:creator>Captain Oblivious</dc:creator>
		<pubDate>Wed, 08 Apr 2009 21:59:15 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=14#comment-336</guid>
		<description>Apocalisp: Because Sam doesn&#039;t know what a monad is, or why one might want to model computation in the type system.</description>
		<content:encoded><![CDATA[<p>Apocalisp: Because Sam doesn&#8217;t know what a monad is, or why one might want to model computation in the type system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: apocalisp</title>
		<link>http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/#comment-167</link>
		<dc:creator>apocalisp</dc:creator>
		<pubDate>Tue, 09 Sep 2008 03:17:16 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=14#comment-167</guid>
		<description>Sam: Why not?</description>
		<content:encoded><![CDATA[<p>Sam: Why not?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sam</title>
		<link>http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/#comment-166</link>
		<dc:creator>Sam</dc:creator>
		<pubDate>Tue, 09 Sep 2008 02:56:31 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=14#comment-166</guid>
		<description>i don&#039;t think such thing is a good idea</description>
		<content:encoded><![CDATA[<p>i don&#8217;t think such thing is a good idea</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lachlan O'Dea</title>
		<link>http://apocalisp.wordpress.com/2008/05/22/thrower-is-a-monad/#comment-89</link>
		<dc:creator>Lachlan O'Dea</dc:creator>
		<pubDate>Mon, 30 Jun 2008 01:44:21 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=14#comment-89</guid>
		<description>I only just discovered your blog from a link on Tony&#039;s site. Absolutely brilliant!</description>
		<content:encoded><![CDATA[<p>I only just discovered your blog from a link on Tony&#8217;s site. Absolutely brilliant!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
