Implement an unlifted Proxy type, Proxy#
authorAustin Seipp <austin@well-typed.com>
Wed, 25 Sep 2013 07:42:21 +0000 (02:42 -0500)
committerAustin Seipp <austin@well-typed.com>
Fri, 27 Sep 2013 05:16:28 +0000 (00:16 -0500)
commit17112084f87d7ccebf639068b85948190d52c6ba
treec99adf3df47ad172f67f2c423d7eb2fa47ef483f
parent5e2f145a3737b8ff81445ffbe3dd72d8985d608e
Implement an unlifted Proxy type, Proxy#

A value of type 'Proxy# a' can only be created through the new,
primitive witness 'proxy# :: Proxy# a' - a Proxy# has no runtime
representation and is thus free.

This lets us clean up the internals of TypeRep, as well as Adam's future
work concerning records (by using a zero-width primitive type.)

Authored-by: Edward Kmett <ekmett@gmail.com>
Authored-by: Austin Seipp <austin@well-typed.com>
Signed-off-by: Austin Seipp <austin@well-typed.com>
compiler/basicTypes/MkId.lhs
compiler/ghci/RtClosureInspect.hs
compiler/prelude/PrelNames.lhs
compiler/prelude/TysPrim.lhs