You could, but then you need overlapping instances to define the one in Control.Monad.Error. -Edward Kmett
On Sat, Sep 12, 2009 at 4:26 PM, Henning Thielemann < [email protected]> wrote: > Evan Laforge schrieb: > > On Fri, Sep 11, 2009 at 6:10 AM, Edward Kmett <[email protected]> wrote: > >> Unfortunately, the instance of Monad for Either a is somewhat misguided > in > >> Haskell. > >> > >> There is a spurious restraint that the Left value in your Either be a > member > >> of some Error class, which was brought about by the deletion of > MonadZero > >> from Haskell 98 (as part of the elimination of failure free patterns, > and an > >> attempted simplification of the language). > > > > I just tried it, and my own instance for Monad (Either String) (all > > I'm really interested in anyway) can coexist with the one for Error e > > => Monad (Either e). But indeed, with the presence of fail, you can't > > write the general Monad (Either e) which "should" work. And it does > > require FlexibleInstances. I suppose as long as flexible instances > > aren't standard then even the String instance can't go in the Prelude. > > Are you sure, that the instance cannot be defined in Haskell 98 using a > helper type class for the Char datatype? > http://www.haskell.org/haskellwiki/List_instance > >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
