Wow... my bad. Stream is in no way a monad transformer.
I really should read before speaking...
Stream s m t is such as "An instance of Stream
has stream type s
, underlying monad m
and token type t
determined by the stream" (http://hackage.haskell.org/packages/archive/parsec/3.1.1/doc/html/Text-Parsec-Prim.html#t:Stream)
ParsecT is the monad transformer, which when stacked with Identity gives a simple monad, aliased by the type Parsec :
type Parsec s u = ParsecT s u Identity
If I have this right, Stream is a monad transformer.
Stream s m t means that it parses 's', is stacked with monad 'm' and has a result of type 't'
So Identity is a monad, the simplest monad, defined as such:
newtype Indentity t = Identity { runIdentity :: t }
It's the identity monad, that does nothing special but wrapping its result.2011/10/8 Captain Freako <capn.freako@gmail.com>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe