Existential types: want better syntactic support (autoboxing?)
Ashley Yakeley
ashley at semantic.org
Mon Feb 6 21:02:35 EST 2006
John Meacham wrote:
> every single parameter type class whole parameter is of kind *
> class Foo a where
>
> automatically declares a data type defined as
>
> data Foo = exists a . Foo a => Foo_ a
> (where Foo_ is some internal, non user accessable name)
>
> and an instance
>
> instance Foo Foo where
> method (Foo_ x) = method x
> ...
I don't much like this, it seems like unnecessary sugar to me. My first
preference would be not to do this at all.
My second preference would be to do this a bit more generally:
every type class
class Foo a b c where
automatically declares a data type defined as
data Foo t = exists a b c . Foo a b c => Foo_ (t a b c)
(where Foo_ is some internal, non user accessable name)
every single parameter type class whole parameter is of kind *
declares an instance
instance Foo (Foo Identity) where
method (Foo_ x) = method x
...
It's still pretty ugly. I don't like special-casing classes that happen
to have a particular kind signature.
--
Ashley Yakeley
More information about the Haskell-prime
mailing list