
On 14/08/07, Jeff Polakow
Of course, the type [Int] denotes a value which is a list of Ints; additionally [Int] can be viewed as a value representing the nondeterministic computation of a single Int. Generally, the type Monad m => m Int can be viewed as a value representing the computation of an Int.
But thats not really right. What exactly m Int does /depends/ on m. It might represent 0 or more computations of Int, or computations of Int carrying some extra stuff around, or complex control logic about what the computation does when. All that is really given, is that we can feed another 'Int->m a' thingy to it using bind, and get back an m a, and the thingy we fed in might even be used zero or more times while doing it. These 'thingy's are called Kleisli Arrows, by the way. -- Brian_Brunswick____brian@ithil.org____Wit____Disclaimer____!Shortsig_rules!