<?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/"
	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>Haskell 101</title>
	<atom:link href="http://haskell101.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://haskell101.wordpress.com</link>
	<description>Learning the Haskell programming language</description>
	<lastBuildDate>Tue, 05 Feb 2008 04:12:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='haskell101.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Haskell 101</title>
		<link>http://haskell101.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://haskell101.wordpress.com/osd.xml" title="Haskell 101" />
	<atom:link rel='hub' href='http://haskell101.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Matching items</title>
		<link>http://haskell101.wordpress.com/2008/02/04/matching-items/</link>
		<comments>http://haskell101.wordpress.com/2008/02/04/matching-items/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 04:02:26 +0000</pubDate>
		<dc:creator>Haskell 101 blogger</dc:creator>
				<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[Guards]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Pattern matching]]></category>
		<category><![CDATA[Recursion]]></category>

		<guid isPermaLink="false">http://haskell101.wordpress.com/?p=7</guid>
		<description><![CDATA[So far, we have created a function that determine whether a given item appears in a list, and another that counts how many times a given item appears in a list. Now let&#8217;s create one that returns a complete list of all items from a given list that match a given item. In other words, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=7&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So far, we have created a function that determine whether a given item appears in a list, and another that counts how many times a given item appears in a list.  Now let&#8217;s create one that returns a complete list of all items from a given list that match a given item.  In other words, we have a list y and want to get a list of all items in y that match a given item x.We want a function that takes an integer and a list, and returns a list. 
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(1) matches::Int-&gt;[Int]-&gt;[Int]</pre>
<p> As we did with our instances function, we start with the case that ends a recursion. 
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(2) matches x [] = []</pre>
<p> For the other cases, we&#8217;ll mimic the structure from our instances function.  This time, though, instead of adding one to the total, we&#8217;ll simply add the matching item to the list we&#8217;re collecting. 
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(3) matches x (y:ys)</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;"><span style="white-space:pre;" class="Apple-tab-span">	</span>| x==y = x:(matches x ys)</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;"><span style="white-space:pre;" class="Apple-tab-span">	</span>| otherwise = matches x ys</pre>
<p> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/haskell101.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/haskell101.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/haskell101.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/haskell101.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/haskell101.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/haskell101.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/haskell101.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/haskell101.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/haskell101.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/haskell101.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/haskell101.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/haskell101.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/haskell101.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/haskell101.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/haskell101.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/haskell101.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=7&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haskell101.wordpress.com/2008/02/04/matching-items/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b3bc1631cae2f1b3555142a26c61799c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Haskell 101 blogger</media:title>
		</media:content>
	</item>
		<item>
		<title>Count matches in a list</title>
		<link>http://haskell101.wordpress.com/2008/02/03/count-matches-in-a-list/</link>
		<comments>http://haskell101.wordpress.com/2008/02/03/count-matches-in-a-list/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 04:07:14 +0000</pubDate>
		<dc:creator>Haskell 101 blogger</dc:creator>
				<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[Guards]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Pattern matching]]></category>
		<category><![CDATA[Recursion]]></category>

		<guid isPermaLink="false">http://haskell101.wordpress.com/2008/02/04/count-matches-in-a-list/</guid>
		<description><![CDATA[What if, instead of just checking to see whether a value exists in a list, we want to count the number of times it is in the list? In other words, we want a function that will take a value, compare it to a given list of integers, and return an integer with the number [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=8&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What if, instead of just checking to see whether a value exists in a list, we want to count the number of times it is in the list?  In other words, we want a function that will take a value, compare it to a given list of integers, and return an integer with the number of times it matches.As usual, let&#8217;s start with our function signature, which we have just about created with the previous sentence: 
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(1) instances::Int-&gt;[Int]-&gt;Int</pre>
<p> By the way, we&#8217;ll generalize this function to be used for a list of any type (integers, strings, etc.) in a near-future posting as a way of introducing the concept of classes in type signatures.   But for now, let&#8217;s stick with the simple case of integers.  OK, we know that we need to look through the list, adding one to our total number of instances for each item that matches our chosen item.  Since Haskell does not use the the loop structures typical in imperative programming, we can use what turns out to be a very simple approach with recursion. One helpful way to think about this is ask what will end the recursion.  Usually it is an empty list.  If we are evaluating our function on an empty list, we know that empty list does not match our chosen value.  In other words: 
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(2) instances x [] = 0</pre>
<p> What about if we are evaluating a non-empty list?  Well, let&#8217;s split that list into one item in the list and the rest of the list, using the (y:ys) concept.  Here, y represents the first item, and ys represents the remainder of the list.  We should add one to our total if y equals our chosen value.  Then we should re-run our function on the remainder of the list, or ys.  In an imperative programming language, we might say something likeif x==y then return 1+(instances x ys)else return (instances x ys)But in Haskell, we&#8217;ll use the concept of guards to do this. 
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(3) instances x (y:ys)</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;"><span class="Apple-tab-span" style="white-space:pre;">	</span>| x==y = 1+(instances x ys)</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;"><span class="Apple-tab-span" style="white-space:pre;">	</span>| otherwise = instances x ys</pre>
<p> All those equal signs can be confusing to a new Haskeller.  Remember, the first thing just to the right of the guard (|) is an expression that will be evaluated.  So x==y is evaluated, and, if true, then the function evaluates to the expression onthe right.  Otherwise, the function will evaluate to to the expression to the right of the &#8220;otherwise&#8221; item.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/haskell101.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/haskell101.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/haskell101.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/haskell101.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/haskell101.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/haskell101.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/haskell101.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/haskell101.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/haskell101.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/haskell101.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/haskell101.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/haskell101.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/haskell101.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/haskell101.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/haskell101.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/haskell101.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=8&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haskell101.wordpress.com/2008/02/03/count-matches-in-a-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b3bc1631cae2f1b3555142a26c61799c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Haskell 101 blogger</media:title>
		</media:content>
	</item>
		<item>
		<title>Checking for a value in a list</title>
		<link>http://haskell101.wordpress.com/2008/01/27/checking-for-a-value-in-a-list/</link>
		<comments>http://haskell101.wordpress.com/2008/01/27/checking-for-a-value-in-a-list/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 05:24:07 +0000</pubDate>
		<dc:creator>Haskell 101 blogger</dc:creator>
				<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[List comprehensions]]></category>
		<category><![CDATA[Pattern matching]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://haskell101.wordpress.com/?p=4</guid>
		<description><![CDATA[Once we have a list, how do we check whether that list contains a certain value? This is sort of like the Ruby method &#8220;include?&#8221;. We want to provide the value we are looking for, and the list in which we would like to look for it. (1) includes::Int-&#62;[Int]-&#62;Bool Let&#8217;s first try using pattern matching [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=4&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Once we have a list, how do we check whether that list contains a certain value?  This is sort of like the Ruby method &#8220;include?&#8221;.</p>
<p>We want to provide the value we are looking for, and the list in which we would like to look for it.</p>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(1) includes::Int-&gt;[Int]-&gt;Bool</pre>
<p>Let&#8217;s first try using pattern matching and recursion.</p>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(2) includes x (y:ys)</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">      | x==y = True</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">      |otherwise = includes x ys</pre>
<p>In other words, take the head of the provided list and compare it to the desired value.  If equal, return true.  We don&#8217;t need to look anymore, because we know the value is there.  If not equal, then we need to keep looking, so recurse, using the tail of the provided list for the next evaluation.</p>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(3) includes x [] = False</pre>
<p>We will only get to this step if we have not matched the value before we get to the empty list.  if that is the case, then we want to return False.</p>
<p>We&#8217;ll look next time at some other, perhaps more elegant, but perhaps slower, way to do this.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/haskell101.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/haskell101.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/haskell101.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/haskell101.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/haskell101.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/haskell101.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/haskell101.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/haskell101.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/haskell101.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/haskell101.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/haskell101.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/haskell101.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/haskell101.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/haskell101.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/haskell101.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/haskell101.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=4&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haskell101.wordpress.com/2008/01/27/checking-for-a-value-in-a-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b3bc1631cae2f1b3555142a26c61799c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Haskell 101 blogger</media:title>
		</media:content>
	</item>
		<item>
		<title>Our first function</title>
		<link>http://haskell101.wordpress.com/2008/01/26/our-first-function/</link>
		<comments>http://haskell101.wordpress.com/2008/01/26/our-first-function/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 00:23:54 +0000</pubDate>
		<dc:creator>Haskell 101 blogger</dc:creator>
				<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Pattern matching]]></category>
		<category><![CDATA[Recursion]]></category>

		<guid isPermaLink="false">http://haskell101.wordpress.com/?p=3</guid>
		<description><![CDATA[Part of what we will be doing throughout these blog entries is to create Haskell functions. Our first function is a simple one. In fact, it already exists. But half of the fun (at least) is going to be creating functions to learn the language. Building up basic code (even if it replicates a higher-order [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=3&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Part of what we will be doing throughout these blog entries is to create Haskell functions.  Our first function is a simple one.  In fact, it already exists.  But half of the fun (at least) is going to be creating functions to learn the language.  Building up basic code (even if it replicates a higher-order existing function) is one of the ways I have found to best learn a new language.So, today&#8217;s function is one that will take two lists and concatenate them.  In the <a href="http://haskell.org/onlinereport/">Haskell 98 Report</a>, this is known as <a href="http://haskell.org/onlinereport/standard-prelude.html#$v++">++</a>.  I&#8217;ll call the function &#8220;union.&#8221;Let&#8217;s set the type signature first.  We want to take two lists and return a third.  So:
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(1) union::[a]-&gt;[a]-&gt;[a]</pre>
<p>How do we define the function?  Let&#8217;s do it using recursion. We&#8217;ll add each item in the first list to an empty list [], and then add each element of the first list after that, and then, once the first list is empty, we&#8217;ll add the second list.  So, we know we want to stop recursing when the first list is empty:
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(2) union [] y = y</pre>
<p>How about adding each item to the initial list?  We&#8217;ll cons the item on using the : operator.
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">(3) union (x:xs) y = x:(union xs y)</pre>
<p>Note the splitting of the first list into x and xs.  This is a handy way of getting access to the first element of the list x, and assigning the remainder, or tail, of the list to xs (with the &#8220;s&#8221; indicating a plural number of elements). You can also see that we grab the first element and then call our union function again.  We then grab the second element, call the function again, and so on.  The pattern in (3) will no longer match when the first list is empty, and then the pattern in (2) will match, ending the recursion.  So, in summary, here is our function:
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">union::[a]-&gt;[a]-&gt;[a]</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">union [] y = y</pre>
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">union (x:xs) y = x:(union xs y)</pre>
<p> If you want, you can take a look at the aforementioned Haskell 98 Report and see how our function compares to the official definition of ++. </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/haskell101.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/haskell101.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/haskell101.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/haskell101.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/haskell101.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/haskell101.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/haskell101.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/haskell101.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/haskell101.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/haskell101.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/haskell101.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/haskell101.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/haskell101.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/haskell101.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/haskell101.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/haskell101.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=3&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haskell101.wordpress.com/2008/01/26/our-first-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b3bc1631cae2f1b3555142a26c61799c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Haskell 101 blogger</media:title>
		</media:content>
	</item>
		<item>
		<title>Welcome to Haskell 101</title>
		<link>http://haskell101.wordpress.com/2008/01/25/hello-world/</link>
		<comments>http://haskell101.wordpress.com/2008/01/25/hello-world/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 04:32:03 +0000</pubDate>
		<dc:creator>Haskell 101 blogger</dc:creator>
				<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[List comprehensions]]></category>
		<category><![CDATA[Pattern matching]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to Haskell 101, a blog where I will walk through my own learnings with the functional programming language known as Haskell. How did I decide to do this? Well, I like to program as a hobby. Of all the languages that I have programmed in (Java, PHP, Visual Basic, and Ruby), Ruby is by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=1&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to Haskell 101, a blog where I will walk through my own learnings with the functional programming language known as <a href="http://haskell.org/">Haskell</a>. How did I decide to do this?  Well, I like to program as a hobby.  Of all the languages that I have programmed in (Java, PHP, Visual Basic, and Ruby), Ruby is by far the one I enjoy most.  I started to read about the <a href="http://www.ruby-lang.org/en/about/">roots of the Ruby programming language</a> and learned of its <a href="http://en.wikipedia.org/wiki/Functional_programming">functional programming</a> roots.  I then started looking into the various functional programming languages out there (especially Erlang, Haskell, and Lisp).  The one that for some reason drew most of my attention was Haskell.  I love the concept of pattern matching, which is not related much at all to regular expressions, by the way.  I also like the elegance of list comprehensions, which feel much like the power and succinctness of some Ruby structures, like
<pre style="margin-left:15px;padding-left:10%;background-color:#e0e0e0;color:#a0522d;">self.collect{|x|x.send(attr)}.uniq.sort</pre>
<p>Welcome aboard!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/haskell101.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/haskell101.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/haskell101.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/haskell101.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/haskell101.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/haskell101.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/haskell101.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/haskell101.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/haskell101.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/haskell101.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/haskell101.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/haskell101.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/haskell101.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/haskell101.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/haskell101.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/haskell101.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haskell101.wordpress.com&amp;blog=2612734&amp;post=1&amp;subd=haskell101&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haskell101.wordpress.com/2008/01/25/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b3bc1631cae2f1b3555142a26c61799c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Haskell 101 blogger</media:title>
		</media:content>
	</item>
	</channel>
</rss>
