[Haskell-cafe] an instance in other than the last type parameters
Stefan Holdermans
stefan at cs.uu.nl
Fri Jul 17 15:25:57 EDT 2009
Petr,
> If I want to make it a functor in the last type variable (b), I can
> just define
>
>> instance Functor (X a) where
>> fmap f (X a b) = X a (f b)
>
> But how do I write it if I want X to be a functor in its first type
> variable?
Short answer: you can't. Easiest way to workaround is to define a
newtype wrapper around your original datatype:
newtype X' b a = X' {unX' :: X a b}
instance Functor (X' b) where
fmap g (X' (X a b)) = X' (X b (g a))
Cheers,
Stefan
More information about the Haskell-Cafe
mailing list