<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Monads and Schroedinger&#8217;s cat</title>
	<link>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/</link>
	<description>Harold the Rebel's blog: Revealing the world as it is.</description>
	<pubDate>Mon, 06 Sep 2010 12:40:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
		<item>
		<title>By: buffi</title>
		<link>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-46</link>
		<dc:creator>buffi</dc:creator>
		<pubDate>Mon, 03 Dec 2007 11:03:06 +0000</pubDate>
		<guid>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-46</guid>
		<description>You don't want to kill the cat now do you?</description>
		<content:encoded><![CDATA[<p>You don&#8217;t want to kill the cat now do you?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephan</title>
		<link>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-44</link>
		<dc:creator>Stephan</dc:creator>
		<pubDate>Mon, 03 Dec 2007 09:43:12 +0000</pubDate>
		<guid>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-44</guid>
		<description>why don't I want to look in the box?</description>
		<content:encoded><![CDATA[<p>why don&#8217;t I want to look in the box?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chandler</title>
		<link>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-43</link>
		<dc:creator>Chandler</dc:creator>
		<pubDate>Mon, 03 Dec 2007 07:59:17 +0000</pubDate>
		<guid>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-43</guid>
		<description>Thanks, this was very clarifying! :-)</description>
		<content:encoded><![CDATA[<p>Thanks, this was very clarifying! <img src='http://www.haroldtherebel.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: harold</title>
		<link>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-42</link>
		<dc:creator>harold</dc:creator>
		<pubDate>Mon, 03 Dec 2007 03:25:29 +0000</pubDate>
		<guid>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-42</guid>
		<description>Great question, Prakash!  Let me take a stab at it.

In Schroedinger's original cat analogy, observing the cat had an effect of determining whether the cat's state was either dead or alive.  Up until the point of observation, the cat had an abstract state: either dead or alive.

The key point here is that simply observing the information inside the box made a change to the state of the world!  One of the core assumptions in Haskell is that expressions are referentially transparent: you can always replace a piece of code with the result of its evaluation, and the program will have the same meaning.  This is super-handy for things like lazy evaluation, retry on failure, and simply making sure that parts of your program can't do totally bonkers unexpected things.

So, for example, what do you do if your program needs to perform IO (change the world)?  Well, Haskell's answer is you put all your change requests in a box (compose all your expressions that depend on IO inside the IO monad), and then hand that box off to someone else who will actually open it (the runtime system that calls main in Haskell).</description>
		<content:encoded><![CDATA[<p>Great question, Prakash!  Let me take a stab at it.</p>
<p>In Schroedinger&#8217;s original cat analogy, observing the cat had an effect of determining whether the cat&#8217;s state was either dead or alive.  Up until the point of observation, the cat had an abstract state: either dead or alive.</p>
<p>The key point here is that simply observing the information inside the box made a change to the state of the world!  One of the core assumptions in Haskell is that expressions are referentially transparent: you can always replace a piece of code with the result of its evaluation, and the program will have the same meaning.  This is super-handy for things like lazy evaluation, retry on failure, and simply making sure that parts of your program can&#8217;t do totally bonkers unexpected things.</p>
<p>So, for example, what do you do if your program needs to perform IO (change the world)?  Well, Haskell&#8217;s answer is you put all your change requests in a box (compose all your expressions that depend on IO inside the IO monad), and then hand that box off to someone else who will actually open it (the runtime system that calls main in Haskell).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Piponi</title>
		<link>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-40</link>
		<dc:creator>Dan Piponi</dc:creator>
		<pubDate>Sun, 02 Dec 2007 23:58:44 +0000</pubDate>
		<guid>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-40</guid>
		<description>I'd argue that what you have here isn't an analogy, it's a precise description!

If I is some index set, and we label some basis vectors using the I, and call the vector space generated by this basis V(I), then V is a monad. In a very crude form: in quantum mechanics I is a set of classical states and V(I) is the corresponding set of quantum states. Quantum mechanics forms a monad and what you have given is a verbal description of this. The 'bind' operator tells you how to compose operations that convert classical states to quantum states.</description>
		<content:encoded><![CDATA[<p>I&#8217;d argue that what you have here isn&#8217;t an analogy, it&#8217;s a precise description!</p>
<p>If I is some index set, and we label some basis vectors using the I, and call the vector space generated by this basis V(I), then V is a monad. In a very crude form: in quantum mechanics I is a set of classical states and V(I) is the corresponding set of quantum states. Quantum mechanics forms a monad and what you have given is a verbal description of this. The &#8216;bind&#8217; operator tells you how to compose operations that convert classical states to quantum states.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Prakash</title>
		<link>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-39</link>
		<dc:creator>Prakash</dc:creator>
		<pubDate>Sun, 02 Dec 2007 21:59:00 +0000</pubDate>
		<guid>http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/#comment-39</guid>
		<description>nice..but i think if you are using the schroedinger's cat as an analogy, you should also explain what's and why's(consequence) we should not interact directly with the contents in the box (in the context of monad in say haskell)</description>
		<content:encoded><![CDATA[<p>nice..but i think if you are using the schroedinger&#8217;s cat as an analogy, you should also explain what&#8217;s and why&#8217;s(consequence) we should not interact directly with the contents in the box (in the context of monad in say haskell)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
<span style="visibility: hidden;">
<a href="http://www.thathigh.com/"><font color="#c0c0c0" size="-100">That High is awesome!</font></a>
<a href="http://www.brawlsnapshots.com/"><font color="#c0c0c0" size="-100">and so is Brawl Snapshots!</font></a>
<font color="#c0c0c0">Created by <a href="http://www.sundresh.org/" style="color:#c0c0c0;">Sameer</a> <a href="http://www.sundresh.com/" style="color:#c0c0c0;">Sundresh</a>, Justin Conroy, et al.</font>
</span>
