Hence the need to perform a "run" operation like runIdentity, evalState or runParser (for Parsec) to get something useful to happen. Except for lists we don't seem to do this. I suppose lists are so simple that the operators :, ++ and
the [] constructor do all we ever need with them. Finally there is no runIO because "main" is essentially that function in every real program? - Greg
----- Original Message ----
From: Jeff Polakow <jeff.polakow@db.com>
To: lanny@cisco.com
Cc: haskell-cafe-bounces@haskell.org; Haskell-Cafe <haskell-cafe@haskell.org>
Sent: Tuesday, August 14, 2007 8:45:06
AM
Subject: Re: [Haskell-cafe] Explaining monads
One general intuition about monads is that they represent
computations rather than simple (already computed) values: