
On 8/2/07, Dan Piponi
I feel that talking about Monads without Kleisli arrows is like talking about category theory without arrows, or at least sets without functions. In each case, without the latter, the former is more or less useless.
The chapter on monads in Bird's "Introduction to Functional Programming using Haskell" introduces an operator (<>) that's equivalent to (>>>) on Kleisli arrows, without the intermediate newtype. One nice property of this operator is that it turns "return" into a genuine identity, rather than the weird pseudo-identity that it forms with (>>=). Sadly I don't actually own a copy of the book, so most of this is from memory.
Also, I'm having a terminological difficulty that maybe someone can help with:
[snip][What's a good word for an object of type IO Int?]
I tend to call it a "value in the [IO] monad". I don't claim to be a canonical reference, though. Stuart