<?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>Wisdom and Wonder &#187; Haskell</title>
	<atom:link href="http://www.wisdomandwonder.com/tag/haskell/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wisdomandwonder.com</link>
	<description>Computer Science and Personal Philosophy</description>
	<lastBuildDate>Tue, 07 Sep 2010 16:46:47 +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>Haskell 2010 Features</title>
		<link>http://www.wisdomandwonder.com/link/3511/haskell-2010-features</link>
		<comments>http://www.wisdomandwonder.com/link/3511/haskell-2010-features#comments</comments>
		<pubDate>Wed, 08 Jul 2009 03:27:24 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Programming Language]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/?p=3511</guid>
		<description><![CDATA[This post includes information on proposed features of Haskell 2010. (via reddit).]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.haskell.org/pipermail/haskell-prime/2009-July/002812.html">This</a> post includes information on proposed features of Haskell 2010.</p>
<p>(via <a href="http://www.reddit.com/r/programming/comments/8z0pz/haskell_2010/">reddit</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/3511/haskell-2010-features/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haskell on the iPhone</title>
		<link>http://www.wisdomandwonder.com/link/3448/haskell-on-the-iphone</link>
		<comments>http://www.wisdomandwonder.com/link/3448/haskell-on-the-iphone#comments</comments>
		<pubDate>Sun, 28 Jun 2009 01:58:11 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming Language]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/?p=3448</guid>
		<description><![CDATA[Here. I assume that this is not a joke. (via reddit)]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.haskell.org/pipermail/haskell/2009-June/021442.html">Here</a>.</p>
<p>I assume that this is not a joke.</p>
<p>(via <a href="http://www.reddit.com/r/programming/comments/8upau/ipwn_studios_releasing_haskell_on_the_iphone/">reddit</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/3448/haskell-on-the-iphone/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Standard Haskell</title>
		<link>http://www.wisdomandwonder.com/link/3139/standard-haskell</link>
		<comments>http://www.wisdomandwonder.com/link/3139/standard-haskell#comments</comments>
		<pubDate>Sat, 06 Jun 2009 13:00:53 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Programming Language]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/?p=3139</guid>
		<description><![CDATA[This is the the Haskell Platform, version 2009.2.0.1: a single, standard Haskell distribution for every system. The Haskell Platform is a blessed library and tool suite for Haskell distilled from Hackage, along with installers for a wide variety of systems. The contents of the platform are specified here: Haskell: Batteries Included. The platform saves you [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>This is the the <a href="http://hackage.haskell.org/platform/">Haskell Platform</a>, version 2009.2.0.1: a single, standard Haskell distribution for every system.</p>
<p>The Haskell Platform is a blessed library and tool suite for Haskell distilled from Hackage, along with installers for a wide variety of systems. The contents of the platform are specified here: Haskell: Batteries Included.</p>
<p>The platform saves you the task of picking and choosing the best Haskell libraries and tools to use for a task. Distro maintainers that support the Haskell Platform can be confident they&#8217;re fully supporting Haskell as the developers intend it. Developers targetting the platform can be confident they have a trusted base of code to work with.</p></blockquote>
<p>It looks interesting; a blessed package collection and a compiler ready to run on OS X, Windows, and Linux.</p>
<p>(via <a href="http://donsbot.wordpress.com/2009/06/02/the-haskell-platform-2009-2-0-1/">Control.Monad.Writer</a> via <a href="http://www.reddit.com/r/programming/comments/8pih1/the_haskell_platform_2009201_a_standard_haskell/">reddit</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/3139/standard-haskell/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Haskell through Category Theory</title>
		<link>http://www.wisdomandwonder.com/link/1639/learning-haskell-through-category-theory</link>
		<comments>http://www.wisdomandwonder.com/link/1639/learning-haskell-through-category-theory#comments</comments>
		<pubDate>Tue, 20 Jan 2009 03:39:16 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[mathematics]]></category>
		<category><![CDATA[Programming Language]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/?p=1639</guid>
		<description><![CDATA[Benjamin Russell posts on learning Haskell through Category Theory here. There are a lot of books listed. each with a detailed comment by Ben about the material. It looks interesting for folks who want to learn category theory.]]></description>
			<content:encoded><![CDATA[<p>Benjamin Russell posts on learning Haskell through Category Theory <a href="http://dekudekuplex.wordpress.com/2009/01/16/learning-haskell-through-category-theory-and-adventuring-in-category-land-like-flatterland-only-about-categories/">here</a>.</p>
<p>There are a lot of books listed. each with a detailed comment by Ben about the material. It looks interesting for folks who want to learn category theory.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/1639/learning-haskell-through-category-theory/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Helium for learning Haskell</title>
		<link>http://www.wisdomandwonder.com/link/1143/helium-for-learning-haskell</link>
		<comments>http://www.wisdomandwonder.com/link/1143/helium-for-learning-haskell#comments</comments>
		<pubDate>Mon, 03 Nov 2008 19:09:19 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Functional]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/?p=1143</guid>
		<description><![CDATA[Helium is a user-friendly compiler designed especially for learning the functional programming language Haskell. The quality of the error messages has been the main concern both in the choice of the language features and in the implementation of the compiler. Helium implements almost full Haskell, where the most notable difference is the absence of type [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://portal.acm.org/citation.cfm?id=871902">Helium</a> is a user-friendly compiler designed especially for learning the functional programming language Haskell. The quality of the error messages has been the main concern both in the choice of the language features and in the implementation of the compiler. Helium implements almost full Haskell, where the most notable difference is the absence of type classes. Our goal is to let students learn functional programming more quickly and with more fun. The compiler has been successfully employed in two introductory programming courses at Utrecht University.</p></blockquote>
<p>(mentioned on the <a href="http://list.cs.brown.edu/pipermail/plt-scheme/2008-November/028240.html">PLT discussion list</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/1143/helium-for-learning-haskell/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Calculating is Better than Scheming</title>
		<link>http://www.wisdomandwonder.com/link/1055/why-calculating-is-better-than-scheming</link>
		<comments>http://www.wisdomandwonder.com/link/1055/why-calculating-is-better-than-scheming#comments</comments>
		<pubDate>Sun, 02 Nov 2008 19:46:52 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Functional]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Programming Language]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/?p=1055</guid>
		<description><![CDATA[In 1987 Phil Wadler wrote the paper Why Calculating is Better than Scheming. It is an essay on the shortcomings of using Scheme as the programming language with which to teach beginning programmers in SICP, and how Miranda would have a better choice for teaching the software engineers of tomorrow. This was very fun for [...]]]></description>
			<content:encoded><![CDATA[<p>In 1987 <a href="http://homepages.inf.ed.ac.uk/wadler/">Phil Wadler</a> wrote the paper <a href="http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf">Why Calculating is Better than Scheming</a>. It is an essay on the shortcomings of using Scheme as the programming language with which to teach beginning programmers in <a href="http://mitpress.mit.edu/sicp/full-text/book/book.html">SICP</a>, and how <a href="http://miranda.org.uk/">Miranda</a> would have a better choice for teaching the software engineers of tomorrow. This was very fun for me to read, and might be for you, too, if you are interested in teaching or the history of both <a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)">Haskell</a> and <a href="http://en.wikipedia.org/wiki/Scheme_programming_language">Scheme</a>.</p>
<p><span id="more-1055"></span></p>
<p>There are lot of arguments made in this paper. The points that I found most interesting, though, had to do with teaching, criticism of Scheme, and insights into the history of both Scheme and Haskell; so that is what I will share. I recommend that you read the paper yourself, though. It is a very light and fun to read 28 pages that goes by in no time.</p>
<h3>Teaching</h3>
<p>Wadler&#8217;s criticism is driven entirely by his experience in the classroom. Having taught a few classes using the SICP curriculum, he found that his students had the same sort of problems over and over. So, his motivation is entirely for helping his students to learn programming. This is really delightful to read criticism driven not only by experience and reason, but a good reason at that. This is remarkably different than what you would hear from the Haskell &#8220;masses&#8221; who hate Scheme but couldn&#8217;t tell you why to save their life!</p>
<p>The paper starts by stating that &#8220;[SICP] may start a revolution in the way that programming is taught&#8221;. &#8216;May&#8217; seems to have been the right word. SICP is lauded as <em>the</em> best book on learning how to program, ever, but, on the other hand, it also takes the blame for turning a whole generation sour on functional programming languages. At times it can be hard to understand where SICP fits in history, and without that, criticisms and praise make equally little sense. Reading papers like this one or <a href="http://en.wikipedia.org/wiki/The_Structure_and_Interpretation_of_the_Computer_Science_Curriculum">SICSC</a> help to get a little more perspective on why. Whatever your take on it, SICP is recognized as a classic; and to Wadler&#8217;s point, maybe if something like it were written using Miranda (or Haskell) it would be even better, but unfortunately for us, nothing like it has been written yet.</p>
<h3>History of Haskell</h3>
<p>You may have wondered why this post is tagged with &#8216;Haskell&#8221;. Well, in the paper, Wadler argues that Miranda, a non-strict (aka lazy evaluation), pure (no destructive assignment) programming language would better serve the goals SICP; in other words it is a superior language for teaching. What the paper <em>doesn&#8217;t</em> convey, though, is just how much of an impact that it made on the author. You should read <a href="http://research.microsoft.com/~simonpj/papers/history-of-haskell/index.htm">A History of Haskell: being lazy with class</a> to see just how influential Miranda was to the creation of <a href="http://www.haskell.org/">Haskell</a>. It is really interesting to sort of peek through a window into the history of Haskell and how it was shaped by Scheme and Miranda! By the way, you replace Haskell anywhere you see Miranda in the paper, and I suspect that it would read exactly the same way.</p>
<h3>Criticisms of Scheme</h3>
<p>Somewhere on the <a href="http://www.plt-scheme.org/maillist/">PLT discussion list</a> Matthias Felleisen once said &#8220;If you condemn something, know it. Know it well.&#8221; I think that Wadler knows Scheme well. While he makes some good arguments, he does rely on the reader knowing the details of how Scheme works, and also, despite his knowledge, he is not afraid of making very wimpy arguments, too. Here are some of the highlights:</p>
<ul>
<li>Argument: Pattern matching allows for more pleasant implementation of<br />
    the recursive and termination of a function.</li>
<li>Reply: Agreed. Pattern matching libraries exist today, but it doesn&#8217;t come<br />
    close to the syntactic sugar that Haskell has.</li>
</ul>
<ul>
<li>Argument: Data types make the code more manageable.</li>
<li>Reply: Agreed. I&#8217;m not sure why SICP didn&#8217;t use them as they surely could have defined the themselves. Most Scheme&#8217;s have them. R6RS <a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-7.html#node_chap_6">includes them</a>.</li>
</ul>
<ul>
<li>Argument: Quote is generally confusing.</li>
<li>Reply: Agree. Students ought not worry about things like evaluation,<br />
    but, they are going to have to learn it some time, why not now?</li>
</ul>
<ul>
<li>Argument: Lazy evaluation would negate need for special forms.</li>
<li>Reply: True, but avoiding understanding the how evaluation works will only<br />
  take students so far. Additionally, special forms are one of the most<br />
  interesting parts of the language.</li>
</ul>
<ul>
<li>Argument: The difference between cons and list is confusing.</li>
<li>Reply: The primary data structure in Lisp is the cons cell. It is a two-cell<br />
object used to build singly-linked lists. Unfortunately, you have to understand<br />
this to know the difference between cons and list.</li>
</ul>
<ul>
<li>Argument: Students might screw up if they don&#8217;t pay attention.</li>
<li>Reply: The problem of lazy students can&#8217;t be fixed by a programming language, no matter what any good salesman would tell you! :)</li>
</ul>
<p>This paper came to my attention after it was mentioned on the PLT Discussion list <a href="http://list.cs.brown.edu/pipermail/plt-scheme/2008-October/027874.html">here</a>.</p>
<p><strong>Addendum: 11/08/08</strong></p>
<p>Looking for more papers on Scheme criticism, I had posted to the <a href="http://groups.google.com/group/plt-scheme/browse_thread/thread/aecfb21c143ca51?hl=en">PLT discussion list</a>, mentioning this paper as an example. While feedback on the paper was mixed, it was Alex&#8217;s pointing out of Wadler&#8217;s momentary confusion when the following code did not work correctly (remember Scheme is prefix notation):</p>

<div class="wp_syntax"><div class="code"><pre class="scheme" style="font-family:monospace;"><span style="color: #000000; font-weight: bold; ">&#40;</span><span style="color: #000000; font-weight: bold; ">&#40;</span><span style="color: #000000; font-weight: bold; ">+</span> <span style="color: #000000; ">3</span> <span style="color: #000000; ">4</span><span style="color: #000000; font-weight: bold; ">&#41;</span> <span style="color: #000000; font-weight: bold; ">=</span> <span style="color: #000000; font-weight: bold; ">&#40;</span><span style="color: #000000; font-weight: bold; ">+</span> <span style="color: #000000; ">5</span> <span style="color: #000000; ">2</span><span style="color: #000000; font-weight: bold; ">&#41;</span><span style="color: #000000; font-weight: bold; ">&#41;</span></pre></div></div>

<p>that forced me to go back to the paper and read it a little more closely.</p>
<p>Reading closer, I see that he didn&#8217;t teach the Scheme class for two years, someone else did. The thing is that the error above would have never occurred for someone who had spent more than a day or two learning Scheme. What I had attributed to Wadler &#8220;hamming it up&#8221; for the paper, <em>seemingly</em> was due to lack of familiarity with Scheme. That said, all of the points he made are still valid! It was refreshing to get someone&#8217;s perspective who wasn&#8217;t totally in love with Scheme and was willing to write about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/1055/why-calculating-is-better-than-scheming/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haskell Super Mario Bros</title>
		<link>http://www.wisdomandwonder.com/link/1086/haskell-super-mario-bros</link>
		<comments>http://www.wisdomandwonder.com/link/1086/haskell-super-mario-bros#comments</comments>
		<pubDate>Thu, 30 Oct 2008 16:35:33 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Programming Language]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/?p=1086</guid>
		<description><![CDATA[Here is a post on a reimplementation of Super Mario Bros written in Haskell. (via The Little Calculist)]]></description>
			<content:encoded><![CDATA[<p><a href="http://groups.google.com/group/fa.haskell/browse_thread/thread/b6e41d00388de008">Here</a> is a post on a reimplementation of Super Mario Bros written in Haskell.</p>
<p>(via <a href="http://calculist.blogspot.com/2008/10/sweet.html">The Little Calculist</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/1086/haskell-super-mario-bros/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liskell</title>
		<link>http://www.wisdomandwonder.com/link/132/liskell</link>
		<comments>http://www.wisdomandwonder.com/link/132/liskell#comments</comments>
		<pubDate>Sun, 27 Apr 2008 20:07:03 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Programming Language]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/link/132/liskell</guid>
		<description><![CDATA[Liskell is a new syntax frontend for Haskell. Next to its syntax in the form of symbolic expressions — which is also known as Lisp — Liskell also features an extended meta-programming facility. Its aim is to get the best of both worlds: being pure and functional with type inference in the tradition of Haskell, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://clemens.endorphin.org/liskell">Liskell</a></p>
<blockquote><p>is a new syntax frontend for Haskell. Next to its syntax in the form of symbolic expressions — which is also known as Lisp — Liskell also features an extended meta-programming facility. Its aim is to get the best of both worlds: being pure and functional with type inference in the tradition of Haskell, while providing the simplicity and uniformity in its syntax that is necessary for meta-programming.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/132/liskell/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haskell Consultants: Well-Typed</title>
		<link>http://www.wisdomandwonder.com/link/93/haskell-consultants-well-typed</link>
		<comments>http://www.wisdomandwonder.com/link/93/haskell-consultants-well-typed#comments</comments>
		<pubDate>Mon, 07 Apr 2008 00:50:29 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Programming Language]]></category>

		<guid isPermaLink="false">http://www.wisdomandwonder.com/link/93/haskell-consultants-well-typed</guid>
		<description><![CDATA[Björn Bringert, Duncan Coutts, and Ian Lynagh have started a Haskell consultancy called Well-Typed. (via CUFP)]]></description>
			<content:encoded><![CDATA[<p>Björn Bringert, Duncan Coutts, and Ian Lynagh have started a Haskell consultancy called <a href="http://www.well-typed.com/who_we_are">Well-Typed</a>.</p>
<p>(via <a href="http://groups.google.com/group/cufp/">CUFP</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wisdomandwonder.com/link/93/haskell-consultants-well-typed/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
