<?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>Amateur Topologist</title>
	<atom:link href="http://www.amateurtopologist.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.amateurtopologist.com</link>
	<description>Politics, programming, math, and science.</description>
	<lastBuildDate>Mon, 08 Mar 2010 18:25:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>I heard you like spheres: the Banach-Tarski paradox</title>
		<link>http://www.amateurtopologist.com/2010/03/08/the-banach-tarski-paradox/</link>
		<comments>http://www.amateurtopologist.com/2010/03/08/the-banach-tarski-paradox/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 18:25:06 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Math]]></category>
		<category><![CDATA[set theory]]></category>

		<guid isPermaLink="false">http://www.amateurtopologist.com/?p=221</guid>
		<description><![CDATA[In most people&#8217;s minds, or at least in the minds of those with a mathematical bent, every set of points  in  (a fancy way of writing three-dimensional Euclidean space) has a volume. Some sets, such as any set consisting of a finite number of points, has zero volume, whereas other sets, such as <a href="http://www.amateurtopologist.com/2010/03/08/the-banach-tarski-paradox/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>In most people&#8217;s minds, or at least in the minds of those with a mathematical bent, every set of points <img src="http://quicklatex.com/cache/ql_5dbc98dcc983a70728bd082d1a47546e.gif" alt="S" title="S" style="vertical-align: 0px; border: none;"/> in <img src="http://quicklatex.com/cache/ql_a6bcd1eddcf2923b077bd5e08d5731c6.gif" alt="\mathbb{R}^3" title="\mathbb{R}^3" style="vertical-align: 0px; border: none;"/> (a fancy way of writing three-dimensional Euclidean space) has a volume. Some sets, such as any set consisting of a finite number of points, has zero volume, whereas other sets, such as the set of all points less than one unit away from the origin, have finite but non-zero volume, and still other sets, such as <img src="http://quicklatex.com/cache/ql_a6bcd1eddcf2923b077bd5e08d5731c6.gif" alt="\mathbb{R}^3" title="\mathbb{R}^3" style="vertical-align: 0px; border: none;"/> itself, have infinite volume. But does every set necessarily have a volume? It turns out the answer is no, even in one-dimensional Euclidean space; I showed this in <a href="http://www.amateurtopologist.com/2009/09/05/vitali-sets-sets-without-length/">a previous post</a>. Instead, I&#8217;ll show you the Banach-Tarski paradox, which states that it is possible, via translations and rotations, to dissect a three-dimensional sphere (technically a 3-ball) and rearrange it into two spheres of the same radius as the original.</p>
<p>For simplicity, we&#8217;ll start by only looking at the surface of the sphere, <img src="http://quicklatex.com/cache/ql_5ad83b44f7458dc7e77258c700e8a861.gif" alt="S^2" title="S^2" style="vertical-align: 0px; border: none;"/>. Let <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/> refer to rotation by <img src="http://quicklatex.com/cache/ql_85bc3565c74bdd8252f37deb4ab7bc01.gif" alt="\pi ^ \circ" title="\pi ^ \circ" style="vertical-align: 0px; border: none;"/> (that is, pi degrees) about the <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/>-axis and let <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/> refer to rotation by <img src="http://quicklatex.com/cache/ql_85bc3565c74bdd8252f37deb4ab7bc01.gif" alt="\pi ^ \circ" title="\pi ^ \circ" style="vertical-align: 0px; border: none;"/> about the <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/>-axis. The exact degree of the rotation isn&#8217;t important, only that it should be impossible via any combination of <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/> and <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/> to go back to the origin. Let <img src="http://quicklatex.com/cache/ql_c1d9f50f86825a1a2302ec2449c17196.gif" alt="H" title="H" style="vertical-align: 0px; border: none;"/> be the set of all rotations that you can get by combining <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/>, <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/>, and their inverses. Then <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/> and <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/> form what&#8217;s known as the &#8221;<a href="http://en.wikipedia.org/wiki/Examples_of_groups#Free_group_on_two_generators">free group on two generators</a>&#8220;, which is composed of all strings using <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/>, <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/>, <img src="http://quicklatex.com/cache/ql_48ea9be719fa783b7063fd5c5531521a.gif" alt="x^{-1}" title="x^{-1}" style="vertical-align: 0px; border: none;"/>, and <img src="http://quicklatex.com/cache/ql_7f3509943ed45dca6bc7253ad677e248.gif" alt="y^{-1}" title="y^{-1}" style="vertical-align: -4px; border: none;"/> as symbols, with the provision that <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/> and <img src="http://quicklatex.com/cache/ql_48ea9be719fa783b7063fd5c5531521a.gif" alt="x^{-1}" title="x^{-1}" style="vertical-align: 0px; border: none;"/> cannot appear together for <img src="http://quicklatex.com/cache/ql_a705544f265074606e3cb05d83eaaf95.gif" alt="x=a,b" title="x=a,b" style="vertical-align: -4px; border: none;"/>. The multiplication for this group is just writing the strings together, subject to the rule that <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/> and <img src="http://quicklatex.com/cache/ql_48ea9be719fa783b7063fd5c5531521a.gif" alt="x^{-1}" title="x^{-1}" style="vertical-align: 0px; border: none;"/> cancel, as do <img src="http://quicklatex.com/cache/ql_7f3509943ed45dca6bc7253ad677e248.gif" alt="y^{-1}" title="y^{-1}" style="vertical-align: -4px; border: none;"/> and <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/>. So, for example, <img src="http://quicklatex.com/cache/ql_483519ae7476a4f9cd8c7f0d9bb0be7a.gif" alt="(xy^{-1}xxy^{-1})(yx^{-1}y)=xy^{-1}xxy^{-1}yx^{-1}y=xy^{-1}xy" title="(xy^{-1}xxy^{-1})(yx^{-1}y)=xy^{-1}xxy^{-1}yx^{-1}y=xy^{-1}xy" style="vertical-align: -4px; border: none;"/>. The name arises from the fact that there are two &#8216;fundamental&#8217; symbols, <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/> and <img src="http://quicklatex.com/cache/ql_415290769594460e2e485922904f345d.gif" alt="y" title="y" style="vertical-align: -4px; border: none;"/>, and it is &#8216;free&#8217;, since they don&#8217;t commute (that is, <img src="http://quicklatex.com/cache/ql_23ee41544ac15acefcb1a423260113bd.gif" alt="xy \neq yx" title="xy \neq yx" style="vertical-align: -4px; border: none;"/>).</p>
<p>Now, one very weird fact about the free group on two generators (written <img src="http://quicklatex.com/cache/ql_adfa0c88ec236f64b0c078015d65db2b.gif" alt="F_2" title="F_2" style="vertical-align: -3px; border: none;"/>) is that you can break it into four pieces, rearrange those four pieces, and then reassemble them into two copies of it. To elaborate, let <img src="http://quicklatex.com/cache/ql_34999b3844747f7ae0be7ab5675e633a.gif" alt="S(x)" title="S(x)" style="vertical-align: -4px; border: none;"/> denote the set of strings in <img src="http://quicklatex.com/cache/ql_adfa0c88ec236f64b0c078015d65db2b.gif" alt="F_2" title="F_2" style="vertical-align: -3px; border: none;"/> that start with <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/>, and similarly for the other three symbols; let <img src="http://quicklatex.com/cache/ql_e1671797c52e15f763380b45e841ec32.gif" alt="e" title="e" style="vertical-align: 0px; border: none;"/> denote the empty string. Then obviously <center><img src="http://quicklatex.com/cache/ql_866d282575f7818e24f5887c075750f5.gif" alt="F_2=\{e\}\cup S(x) \cup S(x^{-1}) \cup S(y) \cup S(y^{-1})" title="F_2=\{e\}\cup S(x) \cup S(x^{-1}) \cup S(y) \cup S(y^{-1})" style="vertical-align: -5px; border: none;"/></center>. But we also have (if we include <img src="http://quicklatex.com/cache/ql_e1671797c52e15f763380b45e841ec32.gif" alt="e" title="e" style="vertical-align: 0px; border: none;"/> in <img src="http://quicklatex.com/cache/ql_59410a59e72bc7bedcedf5c37baae159.gif" alt="aS(a^{-1})" title="aS(a^{-1})" style="vertical-align: -4px; border: none;"/>) <center><img src="http://quicklatex.com/cache/ql_b2a63aef50f278493d59023176e5d01b.gif" alt="F_2=aS(a^{-1})\cup S(a)" title="F_2=aS(a^{-1})\cup S(a)" style="vertical-align: -4px; border: none;"/></center> The reason for this is that if the string <img src="http://quicklatex.com/cache/ql_03c7c0ace395d80182db07ae2c30f034.gif" alt="s" title="s" style="vertical-align: 0px; border: none;"/> doesn&#8217;t start with <img src="http://quicklatex.com/cache/ql_0cc175b9c0f1b6a831c399e269772661.gif" alt="a" title="a" style="vertical-align: 0px; border: none;"/>, then it&#8217;s the same string as <img src="http://quicklatex.com/cache/ql_a7791c76c6de10ab6341ce3ec0ce9f5a.gif" alt="aa^{-1}s" title="aa^{-1}s" style="vertical-align: 0px; border: none;"/> and so is in <img src="http://quicklatex.com/cache/ql_59410a59e72bc7bedcedf5c37baae159.gif" alt="aS(a^{-1})" title="aS(a^{-1})" style="vertical-align: -4px; border: none;"/>; otherwise, it&#8217;s in <img src="http://quicklatex.com/cache/ql_c649b28018c61da37ea70bda100b798a.gif" alt="S(a)" title="S(a)" style="vertical-align: -4px; border: none;"/>. We also have, for the same reason, <center><img src="http://quicklatex.com/cache/ql_d7231b7ca6dc74ad8cb23ec3d2d22b49.gif" alt="F_2=bS(b^{-1})\cup S(b)" title="F_2=bS(b^{-1})\cup S(b)" style="vertical-align: -4px; border: none;"/></center></p>
<p>How is that relevant? Well, <img src="http://quicklatex.com/cache/ql_c1d9f50f86825a1a2302ec2449c17196.gif" alt="H" title="H" style="vertical-align: 0px; border: none;"/> partitions <img src="http://quicklatex.com/cache/ql_5ad83b44f7458dc7e77258c700e8a861.gif" alt="S^2" title="S^2" style="vertical-align: 0px; border: none;"/> into orbits, where an orbit is a collection of points such that each element of <img src="http://quicklatex.com/cache/ql_c1d9f50f86825a1a2302ec2449c17196.gif" alt="H" title="H" style="vertical-align: 0px; border: none;"/> moves points from the orbit into the orbit, and points not in the orbit into another point not in the orbit. For each orbit, we can pick a point <img src="http://quicklatex.com/cache/ql_83878c91171338902e0fe0fb97a8c47a.gif" alt="p" title="p" style="vertical-align: -4px; border: none;"/> inside it; let the set of all these points be <img src="http://quicklatex.com/cache/ql_44c29edb103a2872f519ad0c9a0fdaaa.gif" alt="P" title="P" style="vertical-align: 0px; border: none;"/>. Then we can turn the decomposition of <img src="http://quicklatex.com/cache/ql_adfa0c88ec236f64b0c078015d65db2b.gif" alt="F_2" title="F_2" style="vertical-align: -3px; border: none;"/> into a decomposition of <img src="http://quicklatex.com/cache/ql_c1d9f50f86825a1a2302ec2449c17196.gif" alt="H" title="H" style="vertical-align: 0px; border: none;"/>; using <img src="http://quicklatex.com/cache/ql_355b078226649f1cf244ee0f59eeaf3a.gif" alt="H(x)" title="H(x)" style="vertical-align: -4px; border: none;"/> to indicate the set of all rotations in <img src="http://quicklatex.com/cache/ql_c1d9f50f86825a1a2302ec2449c17196.gif" alt="H" title="H" style="vertical-align: 0px; border: none;"/> that start with <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/>, we have <center><img src="http://quicklatex.com/cache/ql_bd5edba991f43d3050c5a87f71105592.gif" alt="S^2=xH(x^{-1})\cup H(x) = yH(y^{-1}) \cup H(y)=H(x)\cup H(y) \cup H(x^{-1}) \cup H(x^{-1})" title="S^2=xH(x^{-1})\cup H(x) = yH(y^{-1}) \cup H(y)=H(x)\cup H(y) \cup H(x^{-1}) \cup H(x^{-1})" style="vertical-align: -4px; border: none;"/></center><br />
These four sets together make up the sphere (except for <img src="http://quicklatex.com/cache/ql_44c29edb103a2872f519ad0c9a0fdaaa.gif" alt="P" title="P" style="vertical-align: 0px; border: none;"/> itself; we&#8217;ll get back to that), but if we pick two of them and rotate one of those two, we also get back the sphere. Therefore, we can break down the sphere into four pieces and recompose them into two spheres. If we then draw lines joining the sphere to the origin, we can turn this into a decomposition of two solid spheres.</p>
<p>Now, there are two omissions in this proof: first off, I ignored the origin. It turns out that you can cut the sphere without the origin up, rearrange it, and then put it back together so that you have the origin. Second, I ignored the axes of the rotations in <img src="http://quicklatex.com/cache/ql_c1d9f50f86825a1a2302ec2449c17196.gif" alt="H" title="H" style="vertical-align: 0px; border: none;"/>; they are the fixed points of these rotations, and so might cause problems; it turns out that if we call those points <img src="http://quicklatex.com/cache/ql_f623e75af30e62bbd73d6df5b50bb7b5.gif" alt="D" title="D" style="vertical-align: 0px; border: none;"/>; we can again cut up <img src="http://quicklatex.com/cache/ql_194fe99c76b5b78115caa76f280c57c4.gif" alt="S^2-D" title="S^2-D" style="vertical-align: 0px; border: none;"/> and rearrange it into <img src="http://quicklatex.com/cache/ql_5ad83b44f7458dc7e77258c700e8a861.gif" alt="S^2" title="S^2" style="vertical-align: 0px; border: none;"/>.</p>
<p>So what does this mean? If we want to have any reasonable definition of volume, then we want translations and rotations to leave it the same. Then, we must have that some of these sets don&#8217;t have a well-defined volume; much like how you can construct a subset of the real line that doesn&#8217;t have one. We break the sphere down into a number of sets, some of which don&#8217;t have a defined volume; then we move them around and reassemble them. There&#8217;s no contradiction here, since two sets that don&#8217;t have a well-defined volume (or non-measurable sets, as they&#8217;re known) might have a union that has a volume. Of course, this is physically meaningless, since you can&#8217;t actually perform the required divisions; atoms are not infinitely small, after all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/03/08/the-banach-tarski-paradox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS Paint Adventures: one of the first true webcomics</title>
		<link>http://www.amateurtopologist.com/2010/03/04/ms-paint-adventures-one-of-the-first-true-webcomics/</link>
		<comments>http://www.amateurtopologist.com/2010/03/04/ms-paint-adventures-one-of-the-first-true-webcomics/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 18:32:29 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[The Internet]]></category>
		<category><![CDATA[mspa]]></category>
		<category><![CDATA[webcomics]]></category>

		<guid isPermaLink="false">http://www.amateurtopologist.com/?p=727</guid>
		<description><![CDATA[This blog post contains minor spoilers for Homestuck.
The phenomenon of the webcomic is not exactly new by any means; Sluggy Freelance, one of the oldest still-running webcomics, is 12 years old, only slightly older than widespread availability of the Internet. So what do I mean when I say that MS Paint Adventures is one of <a href="http://www.amateurtopologist.com/2010/03/04/ms-paint-adventures-one-of-the-first-true-webcomics/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>This blog post contains minor spoilers for Homestuck.</p>
<p>The phenomenon of the webcomic is not exactly new by any means; Sluggy Freelance, one of the oldest still-running webcomics, is 12 years old, only slightly older than widespread availability of the Internet. So what do I mean when I say that <a href="http://www.mspaintadventures.com/">MS Paint Adventures</a> is one of the first first few webcomics? It&#8217;s one of the few (that I&#8217;m aware of, of course) that actually uses the full potential of a comic that takes place online.</p>
<p>The central thing that makes MS Paint Adventures unique to the best of my knowledge among comics is that the story is in large part driven by the fans. Andrew Hussie, the author, has stated in an interview that he does not plan out the direction the plot will take in advance; although he has some overall ideas of the direction he wants it to go, he lets the reader suggestions dictate it to a larger extent than essentially any other webcomic, or indeed any other form of serial storytelling. The only reason that this is possible is because of the MSPA forum; while it would be possible for this to happen in a world without the Internet, an online forum allows for other users to voice their approval for options that they might otherwise not have thought of, giving Hussie the ability to judge what the readers want. But even elements of discussion that are not necessarily suggestions can generate plot points; the apocalyptic nature of the story was originally unplanned and came about at least partly as a result of discussion on the forums about the posters on the walls of one of the main characters for apocalypse-themed movies.</p>
<p>The various Flash animations and other non-static content that AH occasionally uses to enhance the story are another element of MSPA that fundamentally would not work in a traditional print comic. Although they do not necessarily advance the story any better than a series of corresponding still images would, they make the story more enjoyable and immersive; the end-act flashes are probably the quintessential example of this, reminding the reader of the various active story threads, while providing a bit of progression in each of them; it&#8217;s far more effective than a series of still panels could ever hope to be. And the Flash animation/game not only could not be executed without the internet, it positively <strong>requires</strong> the high-bandwidth connections of today&#8217;s modern Internet infrastructure. The soundtracks to the Flash animations are also a key part of the overall &#8216;experience&#8217;, even though Andrew Hussie himself does not compose them; the collaboration between artist and composer is only possible through the Internet.</p>
<p>Although MSPA is certainly not the first comic to use the internet, or even the first one to use it beyond as a medium for publishing images (other comics have certainly had associated discussion fora), I believe that it&#8217;s the first one to truly use the full potential of the Internet. And while that doesn&#8217;t necessarily make it better than other ones, it definitely moves it from the realm of good to that of great.</p>
<p>Note that I have said that it is one of the few true webcomics, not the only one. The only other one that comes to mind is <a href="http://www.kidradd.com">Kid Radd</a>, which makes extensive use of animation, especially in the later strips, where almost every &#8216;panel&#8217; is a three-second animation. But it didn&#8217;t use Flash, or user suggestions, so as good as it is, I don&#8217;t consider it to use the Internet in the same way that MS Paint Adventures does.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/03/04/ms-paint-adventures-one-of-the-first-true-webcomics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The end of Tonal Tuesday</title>
		<link>http://www.amateurtopologist.com/2010/03/02/the-end-of-tonal-tuesday/</link>
		<comments>http://www.amateurtopologist.com/2010/03/02/the-end-of-tonal-tuesday/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 21:38:58 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://www.amateurtopologist.com/?p=719</guid>
		<description><![CDATA[Tonal Tuesday was something that I decided to do when I was going through a creativity drought as a means of making sure that something would always get posted weekly in hopes of inspiring me; although it seems to have failed that, I am getting back into the swing of finding things to write about, <a href="http://www.amateurtopologist.com/2010/03/02/the-end-of-tonal-tuesday/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Tonal Tuesday was something that I decided to do when I was going through a creativity drought as a means of making sure that <em>something</em> would always get posted weekly in hopes of inspiring me; although it seems to have failed that, I am getting back into the swing of finding things to write about, so I&#8217;m not going to be doing it anymore. Plus it&#8217;s a little embarrassing seeing it being the largest category of posts on the site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/03/02/the-end-of-tonal-tuesday/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>All of my children are mass murderers</title>
		<link>http://www.amateurtopologist.com/2010/03/01/all-of-my-children-are-mass-murderers/</link>
		<comments>http://www.amateurtopologist.com/2010/03/01/all-of-my-children-are-mass-murderers/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 22:50:22 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linguistics]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[formal logic]]></category>
		<category><![CDATA[semantics]]></category>

		<guid isPermaLink="false">http://www.amateurtopologist.com/?p=704</guid>
		<description><![CDATA[Formal logic and English conversational logic are quite different things; everybody knows that when the waitress asks whether you want &#8217;soup or salad&#8217;, &#8216;both&#8217; is not a valid answer. But even when they have different rules, they can still come to the same conclusion. Consider the statement &#8216;not all of my children are mass murderers&#8217;. <a href="http://www.amateurtopologist.com/2010/03/01/all-of-my-children-are-mass-murderers/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Formal logic and English conversational logic are quite different things; everybody knows that when the waitress asks whether you want &#8217;soup or salad&#8217;, &#8216;both&#8217; is not a valid answer. But even when they have different rules, they can still come to the same conclusion. Consider the statement &#8216;not all of my children are mass murderers&#8217;. Is it true for me, given that I do not actually have any children? According to the usual rules of conversational English&#8217;s logical quantifiers (&#8216;all&#8217; and &#8216;there is&#8217; and their various rephrasings), the answer is no: &#8216;not all of my children are mass murderers&#8217; <a href="http://en.wikipedia.org/wiki/Implicature">implicates</a> that I have at least one child, and furthermore <a href="http://en.wikipedia.org/wiki/Entailment_(pragmatics)">entails</a> that that child is not a mass murderer. But what about if we interpret the statement in formal logic? The answer is still no, but for a completely different reason: it is the negation of the statement &#8216;all of my children are mass murderers&#8217;, and that statement is true.</p>
<p>The reason that I can state truthfully in formal logic &#8216;all of my children are mass murderers&#8217; without actually having any children is for the same reason that the sum of an empty set is zero and the product of an empty set is one: if it were any other way, then several useful properties of those operations would not hold. For sum, we would lose the fact that the sum of the two sets A and B is the sum of the set A plus the sum of the set B, and similarly for products. These are true because 0 and 1 are identities of addition and multiplication, respectively. For the case of &#8216;for all&#8217;, we can think of it as first applying the predicate to the set, and then taking the logical and of the result; we then must have that <img src="http://quicklatex.com/cache/ql_f8d7018975056c625f91202c49145536.gif" alt="\forall_{x \in S}p(x)" title="\forall_{x \in S}p(x)" style="vertical-align: -4px; border: none;"/> is true when S is empty, or else we would lose the theorem that <img src="http://quicklatex.com/cache/ql_05d13b7c24315993c09838809aceb89c.gif" alt="\forall_{x \in A}p(x) \wedge \forall_{x \in B}p(x) \Leftrightarrow \forall_{x \in A \cup B}p(x)" title="\forall_{x \in A}p(x) \wedge \forall_{x \in B}p(x) \Leftrightarrow \forall_{x \in A \cup B}p(x)" style="vertical-align: -4px; border: none;"/>. While it could certainly be special-cased to take into account the cases where A or B is the empty set, it would detract from its simplicity, and would require proofs involving it to first show that neither of the two is empty (which can be a challenge, and might even require additional axioms if dealing with infinite sets, choice functions, etc.)</p>
<p>One of the interesting things that this implies is that for any predicate <img src="http://quicklatex.com/cache/ql_83878c91171338902e0fe0fb97a8c47a.gif" alt="p" title="p" style="vertical-align: -4px; border: none;"/>, <img src="http://quicklatex.com/cache/ql_e9552c5cafbc6cf03fd0afc81f054146.gif" alt="\forall_{x \in \emptyset}p(x)" title="\forall_{x \in \emptyset}p(x)" style="vertical-align: -6px; border: none;"/>, even when <img src="http://quicklatex.com/cache/ql_83878c91171338902e0fe0fb97a8c47a.gif" alt="p" title="p" style="vertical-align: -4px; border: none;"/> is false for all <img src="http://quicklatex.com/cache/ql_9dd4e461268c8034f5c8564e155c67a6.gif" alt="x" title="x" style="vertical-align: 0px; border: none;"/>, much like how <img src="http://quicklatex.com/cache/ql_4fa91eaf0766d668583ea3681a908720.gif" alt="\prod_{x \in \emptyset}0=1" title="\prod_{x \in \emptyset}0=1" style="vertical-align: -7px; border: none;"/>. But returning to the linguistics theme, it seems rather odd; this is because the quantifier &#8216;all&#8217; has an implication that the entities that are being talked about exist; in other words, the statement &#8216;all x are y&#8217; implies that at least one x exists. If this is known to be false by the speaker, it sounds odd, much like the statement &#8216;John has two children&#8217; sounds odd if the listener knows that John actually has exactly four children; the statement &#8216;John has two children&#8217; implicates that he has <strong>exactly</strong> two.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/03/01/all-of-my-children-are-mass-murderers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Fundamentals of Fundamentalists</title>
		<link>http://www.amateurtopologist.com/2010/02/25/the-fundamentals-of-fundamentalists/</link>
		<comments>http://www.amateurtopologist.com/2010/02/25/the-fundamentals-of-fundamentalists/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 17:26:17 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[religion]]></category>

		<guid isPermaLink="false">http://amateurtopologist.com/?p=643</guid>
		<description><![CDATA[People like to make fun of religious fundamentalists for seeming to spend half their waking hours preaching on Facebook, in person, via e-mail, etc., to people who they barely even know telling them about the evils of homosexuality, abortion, Muslims, and women wearing pants. The natural response, of course, is to laugh at them, to <a href="http://www.amateurtopologist.com/2010/02/25/the-fundamentals-of-fundamentalists/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>People like to make fun of religious fundamentalists for seeming to spend half their waking hours preaching on Facebook, in person, via e-mail, etc., to people who they barely even know telling them about the evils of homosexuality, abortion, Muslims, and women wearing pants. The natural response, of course, is to laugh at them, to wonder how someone could possibly be so deluded, and to wonder why they seem to spend all their time obsessed about these things; in some cases, people might even speculate that their obsession is due to a kind of repression, such as people who are constantly obsessed with the &#8216;evils&#8217; of homosexuality possibly being in the closet themselves. You laugh, you maybe feel sorry for them; if you&#8217;re feeling particularly brave, you even reply to them and try to show them (and possibly others) the error of their ways, and then you move on.</p>
<p>But&#8230; step back and think about it. Put yourself in their position, and suppose you were a fundamentalist Christian who constantly sees the world in terms of good and evil, who perceives everything around them as part of this epic struggle between the forces of good and the forces of evil. Every single person you see that doesn&#8217;t follow your particular brand of Christianity is doomed by God to an eternity of brimstone and hellfire, when if only they would accept that you&#8217;re right and listen to you, they would instead be enjoying an eternity of unimaginable happiness when they die. And to make it <strong>worse</strong>, the signs that you&#8217;re right are all around you! It&#8217;s just common sense, why won&#8217;t they listen to you? So you spend as much time as you can afford to proselytizing to the unwashed masses, telling them about your Lord and savior Jesus Christ, all in hopes that at least one person will see the light and be saved from Satan and his minions. And in fact, it would be extremely bad of you to not try your hardest to convert these poor lost souls (not to mention <a href="http://www.biblegateway.com/passage/?search=Mark+1%3A17&#038;version=NIV">Jesus&#8217;s command to be fishers of men</a>).</p>
<p>This isn&#8217;t me trying to say that people should stop doing what they do when confronted by the aggressively religious; by all means, confront, debate, ignore, troll, whichever you choose to do. Just don&#8217;t assume that they&#8217;re acting out of irrationality; to them, it make perfect sense.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/02/25/the-fundamentals-of-fundamentalists/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tonal Tuesday: Ronald Jenkees &#8211; Stay Crunchy</title>
		<link>http://www.amateurtopologist.com/2010/02/23/tonal-tuesday-ronald-jenkees-stay-crunchy/</link>
		<comments>http://www.amateurtopologist.com/2010/02/23/tonal-tuesday-ronald-jenkees-stay-crunchy/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 02:55:05 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Tonal Tuesday]]></category>

		<guid isPermaLink="false">http://amateurtopologist.com/?p=641</guid>
		<description><![CDATA[So Ronald Jenkees is this&#8230; rather odd guy who has a couple keyboards and a copy of Fruity Loops to make&#8230; really, really good music. Despite having no actual record label, he&#8217;s managed to make a name for himself, with tens of millions of views on YouTube, and interviews in various publications and Fox Business <a href="http://www.amateurtopologist.com/2010/02/23/tonal-tuesday-ronald-jenkees-stay-crunchy/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>So Ronald Jenkees is this&#8230; rather odd guy who has a couple keyboards and a copy of Fruity Loops to make&#8230; really, really good music. Despite having no actual record label, he&#8217;s managed to make a name for himself, with tens of millions of views on YouTube, and interviews in various publications and Fox Business Network. He also has two CDs available for download on <a href="http://www.ronaldjenkees.com/">his website</a>, which I both highly recommend if you like techno/rock. This video is both a good representative sample of his music and his personality; he&#8217;s very&#8230; quirky, but in a very enthusiastic way.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube-nocookie.com/v/LoFurLevE28&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/LoFurLevE28&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/02/23/tonal-tuesday-ronald-jenkees-stay-crunchy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tonal Tuesday: Autechre &#8211; Gantz Graf</title>
		<link>http://www.amateurtopologist.com/2010/02/16/tonal-tuesday-autechre-gantz-graf/</link>
		<comments>http://www.amateurtopologist.com/2010/02/16/tonal-tuesday-autechre-gantz-graf/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 18:16:26 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Tonal Tuesday]]></category>

		<guid isPermaLink="false">http://amateurtopologist.com/?p=634</guid>
		<description><![CDATA[This is another one of those songs where it&#8217;s the only song I really listen to from the artist. The imagery here is pretty impressive, especially considering it was released in 2002 and (according to Wikipedia, the font of all knowledge) the synchronization between the music and the video was achieved entirely by hand, with <a href="http://www.amateurtopologist.com/2010/02/16/tonal-tuesday-autechre-gantz-graf/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>This is another one of those songs where it&#8217;s the only song I really listen to from the artist. The imagery here is pretty impressive, especially considering it was released in 2002 and (according to Wikipedia, the font of all knowledge) the synchronization between the music and the video was achieved entirely by hand, with no procedural generation aspects. This is one video I especially recommend you <a href="http://www.youtube.com/watch?v=AyJfHU4GoOQ&#038;fmt=22">watch in HD on Youtube itself</a>.</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube-nocookie.com/v/AyJfHU4GoOQ&#038;hl=en_US&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/AyJfHU4GoOQ&#038;hl=en_US&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/02/16/tonal-tuesday-autechre-gantz-graf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why I Love Currying</title>
		<link>http://www.amateurtopologist.com/2010/02/12/why-i-love-currying/</link>
		<comments>http://www.amateurtopologist.com/2010/02/12/why-i-love-currying/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 01:35:54 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[planet sipb]]></category>

		<guid isPermaLink="false">http://www.amateurtopologist.com/?p=613</guid>
		<description><![CDATA[So I&#8217;ve been playing around with Haskell a lot lately and using it for various random stuff; I haven&#8217;t progressed to the point where it&#8217;s my go-to language for random programs (I still use Python for that), but I at least have an idea of how to use it. And there&#8217;s one feature of Haskell <a href="http://www.amateurtopologist.com/2010/02/12/why-i-love-currying/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been playing around with <a href="http://www.haskell.org/">Haskell</a> a lot lately and using it for various random stuff; I haven&#8217;t progressed to the point where it&#8217;s my go-to language for random programs (I still use Python for that), but I at least have an idea of how to use it. And there&#8217;s one feature of Haskell that I miss sorely when I write code in Python, or pretty much any other vaguely functional language: currying.</p>
<p>In Haskell, every function takes a single argument. A function of multiple arguments, such as <code class="codecolorer haskell default"><span class="haskell"><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span style="font-weight: bold;">map</span></a></span></code>, which applies a function to every element in a list, actually only has one argument; for example, map can be interpreted either as taking a function and a list and returning a list, or as taking a function and returning a function that takes a list and returns a list. More formally, in Haskell, these two type declarations are equivalent:</p>
<div class="codecolorer-container haskell default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="haskell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span style="font-weight: bold;">map</span></a> <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#40;</span>a <span style="color: #339933; font-weight: bold;">-&gt;</span> b<span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#91;</span>a<span style="color: green;">&#93;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#91;</span>b<span style="color: green;">&#93;</span><br />
<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span style="font-weight: bold;">map</span></a> <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#40;</span>a <span style="color: #339933; font-weight: bold;">-&gt;</span> b<span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#40;</span><span style="color: green;">&#91;</span>a<span style="color: green;">&#93;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#91;</span>b<span style="color: green;">&#93;</span><span style="color: green;">&#41;</span></div></div>
<p>This process, of taking a multi-argument function and converting it into a series of single-argument functions is known as currying, after the mathematician <a href="http://en.wikipedia.org/wiki/Haskell_Curry">Haskell Curry</a> (who, obviously, is also the source of the name Haskell); the process of partially applying arguments to a function in this way is known as &#8216;partial application&#8217;, but is also called currying. One of the most obvious examples of currying is in sections: the function <code class="codecolorer haskell default"><span class="haskell"><span style="color: green;">&#40;</span><span style="color: red;">0</span> <span style="color: #339933; font-weight: bold;">==</span><span style="color: green;">&#41;</span></span></code> is syntactic sugar for <code class="codecolorer haskell default"><span class="haskell"><span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">==</span><span style="color: green;">&#41;</span> <span style="color: red;">0</span></span></code>, and returns whether its argument is equal to zero. Furthermore, we can also partially apply the predicate to filter, to make a function that filters its argument on a fixed predicate. So, these three examples are completely equivalent:</p>
<div class="codecolorer-container haskell default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="haskell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">removeZeros <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#91;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Integer"><span style="color: #cccc00; font-weight: bold;">Integer</span></a><span style="color: green;">&#93;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#91;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Integer"><span style="color: #cccc00; font-weight: bold;">Integer</span></a><span style="color: green;">&#93;</span><br />
removeZeros xs <span style="color: #339933; font-weight: bold;">=</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span style="font-weight: bold;">filter</span></a> <span style="color: green;">&#40;</span>\x <span style="color: #339933; font-weight: bold;">-&gt;</span> x <span style="color: #339933; font-weight: bold;">/=</span> 0<span style="color: green;">&#41;</span> xs<br />
removeZeros xs <span style="color: #339933; font-weight: bold;">=</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span style="font-weight: bold;">filter</span></a> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">/=</span> 0<span style="color: green;">&#41;</span> xs<br />
removeZeros <span style="color: #339933; font-weight: bold;">=</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span style="font-weight: bold;">filter</span></a> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">/=</span> <span style="color: red;">0</span><span style="color: green;">&#41;</span></div></div>
<p>(where <code class="codecolorer haskell default"><span class="haskell"><span style="color: #339933; font-weight: bold;">/=</span></span></code> is Haskell&#8217;s not-equal operator). The first is the most explicitly-written version, using no currying at all. The second curries the predicate; <code class="codecolorer haskell default"><span class="haskell"><span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">/=</span> <span style="color: red;">0</span><span style="color: green;">&#41;</span> x</span></code> is the same as <code class="codecolorer haskell default"><span class="haskell">x <span style="color: #339933; font-weight: bold;">/=</span> <span style="color: red;">0</span></span></code>. Finally, since <code class="codecolorer haskell default"><span class="haskell">removeZeroes</span></code> applied to an argument is the same as applying <code class="codecolorer haskell default"><span class="haskell"><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span style="font-weight: bold;">filter</span></a> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">/=</span> <span style="color: red;">0</span><span style="color: green;">&#41;</span></span></code> to it, we might as well define the former as the latter. Or, to take another example, look at the sortBy: it has type <code class="codecolorer haskell default"><span class="haskell"><span style="color: green;">&#40;</span>a <span style="color: #339933; font-weight: bold;">-&gt;</span> a <span style="color: #339933; font-weight: bold;">-&gt;</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Ordering"><span style="color: #cccc00; font-weight: bold;">Ordering</span></a><span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#91;</span>a<span style="color: green;">&#93;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#91;</span>a<span style="color: green;">&#93;</span></span></code>, where Ordering is a datatype that can either be <code class="codecolorer haskell default"><span class="haskell">EQ<span style="color: #339933; font-weight: bold;">,</span> LT</span></code> or <code class="codecolorer haskell default"><span class="haskell">GT</span></code> for equal, less than, or greater than. So if you have some custom function you want to sort a list on, you can just say <code class="codecolorer haskell default"><span class="haskell">mySort <span style="color: #339933; font-weight: bold;">=</span> sortBy f</span></code> and it will be the same as writing <code class="codecolorer haskell default"><span class="haskell">mySort xs <span style="color: #339933; font-weight: bold;">=</span> sortBy f xs</span></code>, only cleaner and neater. Or in <a href="http://github.com/veinor/nimber/blob/master/Data/Nimber.hs">my Data.Nimber module</a> (specifically lines <a href="http://github.com/veinor/nimber/blob/master/Data/Nimber.hs#L38">38</a>, <a href="http://github.com/veinor/nimber/blob/master/Data/Nimber.hs#L39">39</a>, and <a href="http://github.com/veinor/nimber/blob/master/Data/Nimber.hs#L43">43</a>), many operations on Nimbers that&#8217;re required in order for me to call then &#8216;numbers&#8217; are just the identity operation. So instead of saying <code class="codecolorer haskell default"><span class="haskell"><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:abs"><span style="font-weight: bold;">abs</span></a> x <span style="color: #339933; font-weight: bold;">=</span> x</span></code>, I can just say <code class="codecolorer haskell default"><span class="haskell"><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:abs"><span style="font-weight: bold;">abs</span></a> <span style="color: #339933; font-weight: bold;">=</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a></span></code>.</p>
<p>Furthermore, without currying, you couldn&#8217;t have <a href="http://www.amateurtopologist.com/2010/01/12/variadic-functions-in-haskell/">variadic functions</a>; in order to work inside Haskell&#8217;s type system, the two types <code class="codecolorer haskell default"><span class="haskell">a <span style="color: #339933; font-weight: bold;">-&gt;</span> b <span style="color: #339933; font-weight: bold;">-&gt;</span> c</span></code> and <code class="codecolorer haskell default"><span class="haskell">a <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#40;</span>b <span style="color: #339933; font-weight: bold;">-&gt;</span> c<span style="color: green;">&#41;</span></span></code> have to be the same type. The full explanation involves typeclasses, and is (in my opinion) worth a read, because it&#8217;s a good explanation of a pretty horriblexcellent (it&#8217;s both at once, you see) type system hack.</p>
<p>As an aside, this also means that <code class="codecolorer haskell default"><span class="haskell"><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a> <span style="color: #339933; font-weight: bold;">::</span> a <span style="color: #339933; font-weight: bold;">-&gt;</span> a</span></code>, the identity function, is in a sense the same thing as <code class="codecolorer haskell default"><span class="haskell"><span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">$</span><span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#40;</span>a <span style="color: #339933; font-weight: bold;">-&gt;</span> b<span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> a <span style="color: #339933; font-weight: bold;">-&gt;</span> b</span></code>, which is function application. You can see this by substituting <code class="codecolorer haskell default"><span class="haskell"><span style="color: green;">&#40;</span>b <span style="color: #339933; font-weight: bold;">-&gt;</span> c<span style="color: green;">&#41;</span></span></code> for <code class="codecolorer haskell default"><span class="haskell">a</span></code> in the type of id, then removing parentheses:</p>
<div class="codecolorer-container haskell default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="haskell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a> <span style="color: #339933; font-weight: bold;">::</span> a <span style="color: #339933; font-weight: bold;">-&gt;</span> a<br />
<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a> <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#40;</span>b <span style="color: #339933; font-weight: bold;">-&gt;</span> c<span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#40;</span>b <span style="color: #339933; font-weight: bold;">-&gt;</span> c<span style="color: green;">&#41;</span><br />
<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a> <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#40;</span>b <span style="color: #339933; font-weight: bold;">-&gt;</span> c<span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> b <span style="color: #339933; font-weight: bold;">-&gt;</span> c</div></div>
<p>So, in particular, <code class="codecolorer haskell default"><span class="haskell">f `<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a>` x</span></code> is the same as <code class="codecolorer haskell default"><span class="haskell">f <span style="color: #339933; font-weight: bold;">$</span> x</span></code>, which is just <code class="codecolorer haskell default"><span class="haskell">f x</span></code>. Another way to think of this is that <code class="codecolorer haskell default"><span class="haskell">f `<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a>` x <span style="color: #339933; font-weight: bold;">=</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a> f x <span style="color: #339933; font-weight: bold;">=</span> <span style="color: green;">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:id"><span style="font-weight: bold;">id</span></a> f<span style="color: green;">&#41;</span> x <span style="color: #339933; font-weight: bold;">=</span> f x</span></code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/02/12/why-i-love-currying/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tonal Tuesday: Mika &#8211; Lollipop</title>
		<link>http://www.amateurtopologist.com/2010/02/09/tonal-tuesday-mika-lollipop/</link>
		<comments>http://www.amateurtopologist.com/2010/02/09/tonal-tuesday-mika-lollipop/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 04:34:07 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Tonal Tuesday]]></category>

		<guid isPermaLink="false">http://www.amateurtopologist.com/?p=608</guid>
		<description><![CDATA[I swear I&#8217;m going to have some actual content up by the end of this week, please don&#8217;t shoot me.

]]></description>
			<content:encoded><![CDATA[<p>I swear I&#8217;m going to have some actual content up by the end of this week, please don&#8217;t shoot me.</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/6md5RSnVUuo&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/6md5RSnVUuo&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/02/09/tonal-tuesday-mika-lollipop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tonal Tuesday: Anberlin &#8211; Reclusion</title>
		<link>http://www.amateurtopologist.com/2010/02/02/tonal-tuesday-anberlin-reclusion/</link>
		<comments>http://www.amateurtopologist.com/2010/02/02/tonal-tuesday-anberlin-reclusion/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 04:28:47 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Tonal Tuesday]]></category>

		<guid isPermaLink="false">http://www.amateurtopologist.com/?p=595</guid>
		<description><![CDATA[This is another song by Anberlin; it&#8217;s not as upbeat as the first one, and the lyrics are even downright emo if you pay attention to them. But I really like the beat of the  chorus here, as well as some of the effects on the verses.

]]></description>
			<content:encoded><![CDATA[<p>This is another song by Anberlin; it&#8217;s not as upbeat as the first one, and the lyrics are even downright emo if you pay attention to them. But I really like the beat of the  chorus here, as well as some of the effects on the verses.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/SfeSzMKOhSk&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SfeSzMKOhSk&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.amateurtopologist.com/2010/02/02/tonal-tuesday-anberlin-reclusion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 19.260 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-09 23:16:27 -->
