[Haskell-cafe] instance Applicative f => Applicative (StateT s f)

Ross Paterson ross at soi.city.ac.uk
Fri Dec 5 10:54:03 EST 2008

On Fri, Dec 05, 2008 at 04:35:51PM +0100, Martijn van Steenbergen wrote:
> How do I implement the following?
>   instance Applicative f => Applicative (StateT s f)
> The implementation of pure is trivial, but I can't figure out an  
> implementation for <*>. Is it possible at all, or do I need to require f  
> to be a monad?

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.

More information about the Haskell-Cafe mailing list