
On Wed, 2008-11-26 at 19:09 +0000, Jules Bean wrote:
Greg Meredith wrote:
Haskellians,
Some monads come with take-out options, e.g.
* List * Set
In the sense that if unit : A -> List A is given by unit a = [a], then taking the head of a list can be used to retrieve values from inside the monad.
Some monads do not come with take-out options, IO being a notorious example.
Some monads, like Maybe, sit on the fence about take-out. They'll provide it when it's available.
To amplify other people's comments:
List A is just as on the fence as Maybe. "[]" plays the role of "Nothing".
Some monads require that you put something in, before you take anything out [r -> a, s -> (a,s), known to their friends as reader and state]
Error is similar to Maybe, but with a more informative Nothing.
Most monads provide some kind of
runM :: ## -> m a -> ## a
More precisely, runM :: f (m a) -> g a Where f and g are usually functors. Maybe, of course, has the nice property that g = m. jcc