
Federico Brubacher wrote:
While i agree to some extent that analogies are bad in some sense , i found this one really insightful when i was trying to put my head around monads :
http://www.haroldtherebel.com/2007/12/02/monads-and-schroedingers-cat/
what do u guys think ?
Personally, I don't find this analogy useful. Because monads are obviously not Schrödinger's cat, the analogy makes me feel like I don't actually have any idea of what monads are. There are other things that I thought were more confusing than useful: If you have a monad (m a) you do not "put a function (a -> b) into the box". First of all, the second parameter of the bind operator does not have the signature (a -> b). It has the signature (a -> m b). Another problem with saying box or wrapper, which Ertugrul pointed out when I said "wrapper" is that the monad may not always return the same result. To quote Ertugrul: "An IO computation can give different results in each run". Finally, the analogy with Schrödinger doesn't seem apt. The point of Schrödinger's cat is that he is simultaneously dead and alive until you open the box to make a measurement. This is not how monads behave. It is *not* a property of Schrödinger's cat that you can't interact with the cat. Sure you can, just make a measurement. Finally, this page doesn't have all the detailed explanation that is necessary to make an analogy really work. Daniel.