[Haskell-cafe] Re: [Haskell] Swapping parameters and type classes
Bas van Dijk
v.dijk.bas at gmail.com
Mon Sep 17 15:29:14 EDT 2007
On 9/16/07, Mads Lindstrøm <mads_lindstroem at yahoo.dk> wrote:
> Hi all
> If I have this type:
> data Foo a b = ...
> and this class
> class Bar (x :: * -> *) where ...
> I can imagine two ways to make Foo an instance of Bar. Either I must
> "apply" the 'a' or the 'b' in (Foo a b). Otherwise it will not have the
> right kind. To "apply" the 'a' I can do:
> instance Bar (Foo a) where ...
> But what if I want to "apply" the 'b' ? How do I do that ?
> Mads Lindstrøm
> Haskell mailing list
> Haskell at haskell.org
(Redirecting to Haskell-Cafe)
I think the easiest way to make it work is with a newtype wrapper
around 'Foo a b' that swaps the arguments, like Brent mentioned.
Without it you need some kind of type level lambda abstraction. Something like:
instance Bar (\x -> Foo x b) where ...
But this is not valid Haskell.
More information about the Haskell-Cafe