
From: A Neighborhood of Infinity Monday, August 07, 2006 You Could Have Invented Monads! (And Maybe You Already Have.) http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html The following part: do let x = 7 y <- Writer (x+1,"inc\n") z <- Writer (2*y,"double\n") Writer (z-1,"dec\n") The notation is very suggestive. When we write y <- ... it's as if we can pretend that the expression on the right hand side is just x+1 and that the side-effect just looks after itself. Why pretend? Couldn't the syntax be: do let x = 7 y <- x+1, Writer ("inc\n") z <- 2*y, Writer ("double\n") z-1, Writer ("dec\n") Or some other delimiter than the comma? I'm thinking this syntax might be easier to understand. :)