<?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>thattommyhall.com &#187; FP</title>
	<atom:link href="http://www.thattommyhall.com/category/fp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thattommyhall.com</link>
	<description>A Random Walk Through Idea Space</description>
	<lastBuildDate>Tue, 20 Jul 2010 19:13:21 +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>Why I am learning Haskell</title>
		<link>http://www.thattommyhall.com/2007/11/27/why-i-am-learning-haskell/</link>
		<comments>http://www.thattommyhall.com/2007/11/27/why-i-am-learning-haskell/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 20:15:17 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[FP]]></category>
		<category><![CDATA[haskell]]></category>

		<guid isPermaLink="false">http://www.thattommyhall.com/2007/11/27/why-i-am-learning-haskell/</guid>
		<description><![CDATA[I saw Simon Peyton-Jones talk on Software Transactional Memory at OSCON and was amazed at how neat it sounded. Taking some ideas from databases to remove some of the pain of multithreaded programming is a great idea. His point that a thread-safe Dequeue is a post-doc publishable result convinced me that something is wrong with [...]]]></description>
			<content:encoded><![CDATA[<p>I saw Simon Peyton-Jones <a href="http://www.blip.tv/file/317758/" target="_blank">talk</a> on Software Transactional Memory at OSCON and was amazed at how neat it sounded. Taking some ideas from databases to remove some of the pain of multithreaded programming is a great idea. His point that a thread-safe Dequeue is a post-doc publishable result convinced me that something is wrong with the threading models in widespread use, while STM reduces it to an undergrad problem. The maping from the complexity of the problem domain to your code should be sane, if implementing a a simple structure like a dequeue using threads makes the code lots longer and requires a large amount of effort by someone with a doctorate, something is wrong. I love python, but multithreaded programs suffer (at least in the C implementation) because of the global interpretor lock (GIL). So I decided to learn Haskell.</p>
<p>There are (as far as I know) two ways of doing concurrency; shared state and message passing. STM is a neat syntax and smart compiler technology that ultimately uses shared state. See a Java or C# implementation <a href="http://www.cs.brown.edu/~mph/" target="_blank">here</a>.</p>
<p>Erlang is becoming increasingly popular and big successes with high availability at Ericsson are compelling real world examples of its use. It uses message passing concurrency and is a nice (mostly) functional language. I am happy with the choice of Haskell though, the syntax seems neat (because of my maths background) and the functional purity enforces functional thinking more than (say) Common Lisp or OCaml. There was a <a href="http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/26#no-headaches" target="_blank">great post</a> today on Planet Haskell on concurrency options in Haskell and I am keen to explore them.</p>
<p>Maybe I will not hack in Haskell full time, but I think some of the ideas will go mainstream (already appearing in Linq and C# from Microsoft, who have bought in <a href="http://research.microsoft.com/~emeijer/" target="_blank">a lot</a> of <a href="http://research.microsoft.com/~simonpj/" target="_blank">talented folk</a> from the FP world ), but maybe I will.</p>
<p>It fits my mind well so far.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.thattommyhall.com/2007/11/27/why-i-am-learning-haskell/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.thattommyhall.com/2007/11/27/why-i-am-learning-haskell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mind Bending Stuff</title>
		<link>http://www.thattommyhall.com/2007/11/01/mind-bending-stuff/</link>
		<comments>http://www.thattommyhall.com/2007/11/01/mind-bending-stuff/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 12:57:05 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[FP]]></category>
		<category><![CDATA[OCaml]]></category>
		<category><![CDATA[haskell]]></category>

		<guid isPermaLink="false">http://www.thattommyhall.com/?p=3</guid>
		<description><![CDATA[I am just getting my head around this (pdf) comment on the problem at the last ICFP Programming Contest , anyone who likes puzzles, compilers and reverse engineering should take a look, I am amazed by how rich this problem was. The ICFP do not specify what counts as &#8220;functional&#8221;, but OCaml and Haskell usually [...]]]></description>
			<content:encoded><![CDATA[<p>I am just getting my head around <a href="http://www.cs.uu.nl/research/techreps/repo/CS-2007/2007-029.pdf" target="_blank">this (pdf)</a> comment on the problem at the last <a href="http://www.icfpcontest.org/">ICFP Programming Contest</a> , anyone who likes puzzles, compilers and reverse engineering should take a look, I am amazed by how rich this problem was. The ICFP do not specify what counts as &#8220;functional&#8221;, but OCaml and Haskell usually do very well in the contest. This year a C++ team won it and a perl team came second, after lots of teams abandoned their functional languages. The authors make the point that data structure design/choice is very important (which we all should know I suppose), they recommend Data.sequence in Haskel and I think it is similar to a Rope (sort of tree based string representation that makes concatenation a snip, <a href="http://en.wikipedia.org/wiki/Rope_%28computer_science%29" target="_blank">wikipedia </a>is weak on it but <a href="http://www.rubyquiz.com/quiz137.html" target="_blank">Ruby Quiz</a> mentioned it a few weeks ago)</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.thattommyhall.com/2007/11/01/mind-bending-stuff/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.thattommyhall.com/2007/11/01/mind-bending-stuff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
