[Haskell-cafe] Re: nested maybes
J. Garrett Morris
trevion at gmail.com
Mon Feb 5 09:55:26 EST 2007
On 2/5/07, Yitzchak Gale <gale at sefer.org> wrote:
> J. Garrett Morris wrote:
> > Mainly to keep the type error messages simpler.
> There are two ways to get around that problem:
> 1. Make your functions polymorphic, using
> MonadState, MonadError, etc. Each function
> mentions only the capabilities that it needs,
> without having the whole monad stack in its type.
Again, from the earlier example, I'm not sure how typing:
apply :: (MonadCont m, MonadState Blargh m, MonadError Fzzt m, MonadIO m) =>
Handle -> Attribute a -> m a
is simpler than
apply :: Handle -> Attribute a -> m a
especially when almost every function in the project would have
required the same constraint list.
> 2. Use a type alias for the monad stack.
At least as of 6.4.2, GHC printed the expanded types, not the aliases,
in error messages.
> (There are other big advantages of both of these.)
It is myself I have never met, whose face is pasted on the underside of my mind.
More information about the Haskell-Cafe