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
