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

Reply via email to