On Tue, Feb 8, 2011 at 12:33 PM, Ivan Lazar Miljenovic <
[email protected]> wrote:

> On 8 February 2011 23:25, John Lato <[email protected]> wrote:
> >> class Container c where
> >>     type Elem c :: *
> >>
> >> class (Container cIn, Container cOut) => CMap cIn cOut where
> >>     cmap :: (Elem cIn -> Elem cOut) -> cIn -> cOut
> >>
> >> instance (a ~ Elem (c a), b ~ Elem (c b), Functor c, Container (c a),
> >> Container (c b)) => CMap (c a) (c b) where
> >>     cmap = fmap
>
> I'm not sure if that will work for types like Set, as you're not
> explicitly bringing the constraint in.


It won't work for Set, but Set's not a functor.  In this case just write
this instance instead:

> instance (Ord a, Ord b) => CMap (Set a) (Set b) where
>     cmap = Set.map

John
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to