[Haskell-cafe] lifting restrictions on defining instances
John Lask
jvlask at hotmail.com
Fri Jul 17 20:56:11 EDT 2009
Can anyone explain the theoretical reason for this limitation, ie other than
it is a syntactical restriction, what would it take to lift this restriction
?
----- Original Message -----
From: "Stefan Holdermans" <stefan at cs.uu.nl>
To: "Petr Pudlak" <deb at pudlak.name>
Cc: <haskell-cafe at haskell.org>
Sent: Saturday, July 18, 2009 5:25 AM
Subject: Re: [Haskell-cafe] an instance in other than the last type
parameters
> 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
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
More information about the Haskell-Cafe
mailing list