Changes to Typeable

John Meacham john at
Sat Feb 11 00:30:02 CET 2012

Would it be useful to make 'Proxy' an unboxed type itself? so

Proxy :: forall k . k -> #

This would statically ensure that no one accidentally passes ⊥ as a parameter
or will get anything other than the unit 'Proxy' when trying to evaluate it.
So the compiler can unconditionally elide the parameter at runtime. Pretty
much exactly how State# gets dropped which has almost the same definition.

something I have thought about is perhaps a special syntax for Proxy, like
{:: Int -> Int } is short for (Proxy :: Proxy (Int -> Int)). not sure whether
that is useful enough in practice though, but could be handy if we are throwing
around types a lot.


On Fri, Feb 10, 2012 at 8:03 AM, Simon Peyton-Jones
<simonpj at> wrote:
> Friends
> The page describes an improved implementation of the Typeable class, making use of polymorphic kinds. Technically it is straightforward, but it represents a non-backward-compatible change to a widely used library, so we need to make a plan for the transition.
> Comments?  You can fix typos or add issues directly in the wiki page, or discuss by email
> Simon
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at

More information about the Glasgow-haskell-users mailing list