
On Fri, Dec 05, 2008 at 06:52:31PM +0100, Martijn van Steenbergen wrote:
Ross Paterson wrote:
Yes, because you need part of the value generated by the first computation, namely the state (inside the f), to construct the second one. You can do that in a Monad, but not in an Applicative.
This makes me wonder: does that mean there is no such thing as an applicative transformer?
StateT isn't an applicative transformer, but ErrorT, ReaderT and WriterT are, and there are others that don't correspond to monad transformers, starting with product and composition. The accumulating exceptions applicative (originally due to Duncan Coutts) generalizes to a transformer. Underneath the permutation phrase parser of Arthur Baars, Andres Löh and Doaitse Swierstra is an applicative transformer.