On Tue, 30 Mar 2004, S. Alexander Jacobson wrote:

> Following the declaration of "instance Monad []"
> in the prelude, and puzzling over the absence of
> its equivalent from Data.Set, I naively typed:
> 
>    instance Monad Set where
>       m >>= k = concatSets (mapSet k m)
>       return x = unitSet x
>       fail s = emptySet
> 
>    concatSets sets = foldl union emptySet (setToList sets)
>    instance (Eq b,Ord b) => Ord (Set b) where
>       compare set1 set2 = compare (setToList set1) (setToList set2)
> 
> and got the following error:
> 
>     Could not deduce (Ord b) from the context (Monad Set)
>       arising from use of `concatSets' at dbMeta3.hs:242
>     Probable fix:
>         Add (Ord b) to the class or instance method `>>='
>     In the definition of `>>=': >>= m k = concatSets (mapSet k m)
>     In the definition for method `>>='
>     In the instance declaration for `Monad Set'

Surprisingly this is exact the same problem I posed in my mail "Context
for type parameters of type constructors" just before. I wanted to create
the class VectorSpace which is the analogon to Monad in your example. I'm
excited if the answers to your question will help me. :-) 


_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to