[Haskell-cafe] a problem defining a monad instance

Jake McArthur jake.mcarthur at gmail.com
Fri Nov 6 14:36:41 EST 2009


Petr Pudlak wrote:
> The problem is the (Ord b) condition, which is required for the Map
> functions.  When I try to define the monad instance as
> 
>> instance Monad Distrib where
>>     return = dreturn
>>     (>>=)  = dcompose
> 
> obviously, I get an error at (>>=):
>     Could not deduce (Ord b) from the context.

This is the same reason we do not have e.g. a Monad instance for Set. 
One solution is a concept of "restricted" monads, and one implementation 
of restricted monads is given here: 
http://okmij.org/ftp/Haskell/types.html#restricted-datatypes

- Jake


More information about the Haskell-Cafe mailing list