[Haskell-cafe] Existentials for multi-parameter type classes?

Michael Sloan mgsloan at gmail.com
Fri Mar 20 05:15:08 UTC 2015


There is!

data Collision = forall a b. Collidable a b => Collision {collider1 ::
a, collider2 :: b}

On Thu, Mar 19, 2015 at 10:11 PM, Lyle Kopnicky <lists at qseep.net> wrote:
> Hi folks,
>
> I know how to write existentially quantified data constructors for
> single-parameter type classes, but I'm having trouble doing it for
> multi-parameter type classes. Is it not possible, or am I just using the
> wrong syntax?
>
> I have this class:
>
> class Collidable a b where
> collideWith :: a -> b -> String
>
> And I tried to define an existentially quantified data constructor thusly:
>
> data Collision = forall a. (forall b. Collidable a b => Collision {collider1
> :: a, collider2 :: b})
>
> I get a parse error. So then I tried:
>
> data Collision = forall a. forall b. Collidable a b => Collision {collider1
> :: a, collider2 :: b}
>
> I get a different parse error. Is there any way to make this work?
>
> Thanks,
> Lyle
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list