<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dysfunctional Programming</title>
	<atom:link href="http://ra3s.com/wordpress/dysfunctional-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://ra3s.com/wordpress/dysfunctional-programming</link>
	<description>(λ (a b) a) vs (λ (a b) b)</description>
	<lastBuildDate>Fri, 13 Aug 2010 03:12:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Oracle sues Google over Android and Java</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/12/oracle-sues-google-over-android-and-java-relevant-results-cnet-news/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/12/oracle-sues-google-over-android-and-java-relevant-results-cnet-news/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:11:37 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[repost]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=254</guid>
		<description><![CDATA[Oracle sues Google over Android and Java &#124; CNET News. Wow. Sun may have open-sourced Java in the past, but at this moment, the JVM seems like a more hostile platform than .Net.]]></description>
			<content:encoded><![CDATA[<p><a href="http://news.cnet.com/8301-30684_3-20013546-265.html">Oracle sues Google over Android and Java | CNET News</a>.</p>
<p>Wow. Sun may have open-sourced Java in the past, but at this moment, the JVM seems like a more hostile platform than .Net.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/12/oracle-sues-google-over-android-and-java-relevant-results-cnet-news/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Island/Lake recursion</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/09/islandlake-recursion/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/09/islandlake-recursion/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 17:23:15 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[repost]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=251</guid>
		<description><![CDATA[The Island and Lake Combination. For those who are curious which is the largest (island in a lake on an)^2 on an island. Because recursion isn&#8217;t just for programmers and computers.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.elbruz.org/islands/Islands%20and%20Lakes.htm">The Island and Lake Combination</a>.</p>
<p>For those who are curious which is the largest (island in a lake on an)^2 on an island. Because recursion isn&#8217;t just for programmers and computers.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/09/islandlake-recursion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go: Defer, Panic, and Recover</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/04/go-defer-panic-and-recover/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/04/go-defer-panic-and-recover/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 05:50:41 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=247</guid>
		<description><![CDATA[It seems after much resistance to the idea, Go has added exception handling to the language in the form of defer, panic, and recover. The Go Programming Language Blog: Defer, Panic, and Recover. Don&#8217;t get me wrong, I think the&#8217;ve &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/08/04/go-defer-panic-and-recover/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It seems after much resistance to the idea, Go has added exception handling to the language in the form of defer, panic, and recover.</p>
<p><a href="http://blog.golang.org/2010/08/defer-panic-and-recover.html">The Go Programming Language Blog: Defer, Panic, and Recover</a>.</p>
<p>Don&#8217;t get me wrong, I think the&#8217;ve got something here.  Defer gives you the equivalent of C#&#8217;s finally/using; or a nice subset of C++&#8217;s destructors; or Lisp&#8217;s unwind-protect.  Panic = throw / raise.  Recover = catch.</p>
<p>The blog post gives the impression that you can&#8217;t programmatically access the value passed to panic &#8212; &#8220;recover returns nil&#8221; &#8212; but before judging that behavior I should try to confirm it in the Go documentation.</p>
<p>All in all, I&#8217;m giving this design a thumbs up. No element of it is new, but they seem to have brought exception handling in without compromising their mantra of practical and simple.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/08/04/go-defer-panic-and-recover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Functional Programming, Reductio</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/07/01/functional-programming-reductio/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/07/01/functional-programming-reductio/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 23:29:03 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[repost]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=224</guid>
		<description><![CDATA[Came across a slide deck via Reddit with an excellent point, cutting across the various functional programming diciplines: Central to the thesis of FP is the notion of referential transparency. Referential transparency leads to program compositionality. // #1 X x = function(); &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/07/01/functional-programming-reductio/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Came across a <a href="http://projects.tmorris.net/public/what-does-fp-mean/artifacts/0.3/chunk-html/index.html">slide deck</a> via <a href="http://www.reddit.com/comments/chjpg/are_you_a_functional_programmer_come_work_at_a/c0ssonn">Reddit</a> with an excellent point, cutting across the various functional programming diciplines:</p>
<blockquote><p>Central to the thesis of FP is the notion of <em>referential transparency</em>.</p>
<p>Referential transparency leads to <em>program compositionality</em>.</p>
<p><code>// #1<br />
X x = function();<br />
R r1 = arbitrary(x);<br />
R r2 = arbitrary(x);</code></p>
<p><code>// #2<br />
R r1 = arbitrary(function());<br />
R r2 = arbitrary(function());</code></p>
<p>If these two programs produce the same outcome then <code>function</code> is <em>referentially transparent</em>.</p></blockquote>
<p>Well put. Back to the Reddit thread, functional programming and imperative programming are not a true dichotomy, but they one does need to mix carefully.</p>
<p>I find it most useful to build imperative programs on top a functional base, a foundation if you will. Taking the previous example, the function &#8216;arbitrary&#8217; may not be a true function; it may modify persistent state, the values r1 and r2 being unequal. But building on top of the referentially transparent &#8216;function&#8217;, i can later refactor my program from #1 to #3:</p>
<p><code>// #3<br />
void part1() {<br />
    R r1 = arbitrary(function()); /*...*/<br />
}<br />
void part2() {<br />
    R r2 = arbitrary(function()); /*...*/<br />
}</code></p>
<p>And be able to rely on r1 and r2 being unchanged from their meaning in #1.  </p>
<p>Referential transparency can be explained as the property that a function <em>means the same thing<em> every time you call it, no matter where or when you call it. That&#8217;s a very useful property to have in understanding and refactoring programs.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/07/01/functional-programming-reductio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wicked cool — mandlebulb fly-through</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/25/wicked-cool-%e2%80%94-mandlebulb-fly-through/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/25/wicked-cool-%e2%80%94-mandlebulb-fly-through/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 18:54:21 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[non-tech]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=231</guid>
		<description><![CDATA[Please, PLEASE watch this in HD full screen. Wow. Math can be breathtakingly beautiful. via YouTube &#8211; Mandelbox trip.]]></description>
			<content:encoded><![CDATA[<p>Please, PLEASE watch this in HD full screen.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="428" height="254" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/bO9ugnn8DbE&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="428" height="254" src="http://www.youtube.com/v/bO9ugnn8DbE&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Wow. Math can be breathtakingly beautiful.</p>
<p>via <a href="http://www.youtube.com/watch?v=bO9ugnn8DbE">YouTube &#8211; Mandelbox trip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/25/wicked-cool-%e2%80%94-mandlebulb-fly-through/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GOTOs inconvenient</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/25/gotos-inconvenient/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/25/gotos-inconvenient/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 15:03:12 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[functional programming]]></category>
		<category><![CDATA[repost]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=200</guid>
		<description><![CDATA[From &#8220;The Discovery of Continuations&#8221; The talk actually had one direct and important consequence for computing. Under the inspiration of the notion of the unnecessity of goto’s, Dijkstra spent that evening constructing realistic examples of programs without goto’s, … So &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/06/25/gotos-inconvenient/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>From &#8220;<a href="http://www.brics.dk/~hosc/vol06/contents.html">The Discovery of Continuations</a>&#8221;</p>
<blockquote><p>The talk actually had one direct and important consequence for computing. Under the inspiration of the notion of the unnecessity of goto’s, Dijkstra spent that evening constructing realistic examples of programs without goto’s, … So while van Wijngaarden said that goto’s were unnecessary … , Dijkstra stretched the point to say that goto’s were inconvenient. The latter lesson stuck. &#8212; McIlroy</p></blockquote>
<p>The <a href="http://en.wikipedia.org/wiki/Continuation-passing_style">continuation passing transformation </a>grew out an attempt to formalize <a href="http://en.wikipedia.org/wiki/Goto_statement">GOTO</a>, and ended up both obsoleting it as well as producing new, better structured control primitives (for example, <a href="http://en.wikipedia.org/wiki/Break_statement#Early_exit_from_loops">break</a>).  It&#8217;s strange to me that I could have gone as far as I have, as a programmer, without having a good understanding of this concept. We use it implicitly all the time &#8212; the <a href="http://en.wikipedia.org/wiki/Call_stack">call stack </a>of course &#8212; but rarely consider all of the ramifications (threading) and certainly not all of the utility (coroutines, exception handling, etc).</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/25/gotos-inconvenient/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trouble with OOP</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/20/trouble-with-oop/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/20/trouble-with-oop/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 18:37:05 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[object oriented]]></category>
		<category><![CDATA[repost]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=209</guid>
		<description><![CDATA[Subtyping, Subclassing, and Trouble with OOP. Excerpt: What makes this problem more unsettling is that both you and I tried to do everything by the book. We wrote a safe, typechecked code. We eschewed casts. g++ (2.95.2) compiler with flags &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/06/20/trouble-with-oop/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://okmij.org/ftp/Computation/Subtyping/">Subtyping, Subclassing, and Trouble with OOP</a>.</p>
<p>Excerpt:</p>
<blockquote><p>What makes this problem more unsettling is that both you and I tried to do everything by the book. We wrote a safe, typechecked code. We eschewed casts. g++ (2.95.2) compiler with flags -W and -Wall issued not a single warning. […] And yet, despite all my efforts to separate interface and implementation, I failed. Should a programming language or the methodology take at least a part of the blame?</p></blockquote>
<p>A lot of people miss the point with Object Oriented Programming (OOP) – this author gets it.</p>
<p><span id="more-209"></span>Painfully few programmers are aware of the <a href="http://en.wikipedia.org/wiki/Liskov_substitution_principle">Liskov Substitution Principle</a> (LSP), and its violations incur the wrath of some distant cousin of the the side effect monster, the violated invariant monster. LSP is incredibly tricky to apply – generally, the object metaphor actually gets in the way of verifying LSP properties. The general guidance of OO spends far too little time on these implications. Inevitably, a programmer does something totally reasonable but everything breaks anyway.</p>
<p>I try to follow the LSP when designing green-field. This rarely permits me to use inheritance of implementation. Rather, <a href="http://en.wikipedia.org/wiki/Composite_pattern">composition</a> dominates my designs.</p>
<p>For the curious, the author&#8217;s program strengthened a precondition – the derived class CSet required the element be unique for insert to &#8216;succeed&#8217;, where CBag required nothing. As such, LSP predicts that CSets cannot be transparently substituted where CBags are predicted; if they are, different behavior may (and did) result.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/20/trouble-with-oop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best and Free Programming Ebooks</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/19/best-and-free-programming-ebooks/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/19/best-and-free-programming-ebooks/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 20:53:40 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=204</guid>
		<description><![CDATA[(updated / switched link to source article on stack overflow) So, I wrote my list of some unique programming texts. But on the more practical side, there&#8217;s this: Best and Free Programming Ebooks. Free full texts, covering: Bash, C, C++, &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/06/19/best-and-free-programming-ebooks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>(updated / switched link to source article on stack overflow)</p>
<p>So, I wrote my list of some <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/05/27/best-way-to-learn-a-programming-language/">unique programming texts</a>. But on the more practical side, there&#8217;s this:</p>
<p><a href="http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books">Best and Free Programming Ebooks</a>.</p>
<p>Free full texts, covering: Bash, C, C++, C#, Common Lisp, Haskell Java, JavaScript, Lua, Objective-C, Perl, PHP, PowerShell, Prolog, Python, Ruby, SQL, x86 assembly, algorithms, version control, and a couple other topics.  I&#8217;ll still be putting together my own preferred lists, but half of what I&#8217;ve got is already on this list.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/19/best-and-free-programming-ebooks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacker News &#124; &#8220;it was designed to restrict the kind of trouble programmers can get themselves &#8230;</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/16/hacker-news-it-was-designed-to-restrict-the-kind-of-trouble-programmers-can-get-themselves/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/16/hacker-news-it-was-designed-to-restrict-the-kind-of-trouble-programmers-can-get-themselves/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 06:25:10 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=198</guid>
		<description><![CDATA[Great one liner on PL design: Every programming language is designed to restrict trouble programmers can get into. The key is that they all have different ideas of trouble. via Hacker News]]></description>
			<content:encoded><![CDATA[<p>Great one liner on PL design:</p>
<blockquote><p>Every programming language is designed to restrict trouble programmers can get into. The key is that they all have different ideas of trouble.</p></blockquote>
<p>via <a href="http://news.ycombinator.com/item?id=1437340">Hacker News</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/16/hacker-news-it-was-designed-to-restrict-the-kind-of-trouble-programmers-can-get-themselves/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&lt;humor&gt; Yeah, Toast</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/03/yeah-toast/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/03/yeah-toast/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 06:53:19 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[non-tech]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=178</guid>
		<description><![CDATA[So, for those not familiar, I go by toast` on the programming language IRC channels. So when I saw this video come up on youtube, with Mr. Engineer (my preferred TF2 class), I had a feeling of a certain kind &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/06/03/yeah-toast/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So, for those not familiar, I go by toast` on the programming language IRC channels. So when I saw this video come up on youtube, with Mr. Engineer (my preferred TF2 class), I had a feeling of a certain kind of awesome. Like it was meant for me, or something.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="428" height="254" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/avU5onrWfYo&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="428" height="254" src="http://www.youtube-nocookie.com/v/avU5onrWfYo&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Yeah, Toast!!</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/2010/06/03/yeah-toast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
