Hi. > The definitions are accepted by GHC: > > class Functor f where > type FC f a :: Constraint > type FC f a = () > > fmap :: (FC f a, FC f b) => (a -> b) -> f a -> f b > > instance Functor [] where > fmap = map
Yes. This is what I would have expected to work. > But I don't like the 'a' being an index parameter, and then the > following expression: > > fmap (+1) [1::Int] > > Gives the error: > > Could not deduce (FC [] Int) arising from a use of `fmap' > In the expression: fmap (+ 1) [1 :: Int] > In an equation for `it': it = fmap (+ 1) [1 :: Int] > >> gives the error: >> >> Number of parameters must match family declaration; expected 1 >> In the type synonym instance default declaration for `FC' >> In the class declaration for `Functor' I get the same error, but it looks like a bug to me: If I move the declaration type FC f a = () to the instance, then the example passes. Cheers, Andres _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users