On Jun 2, 2016, at 7:12 AM, Simon Peyton Jones <simonpj@microsoft.com> wrote:

But why is NameU exposed to clients?   GHC needs to know, but clients don’t.  What use are these packages making of it?

singletons uses NameU in two places:

1. To generate unique numbers. It would be easy enough for me to put this functionality in my own monad, though.

2. More importantly, to work around GHC's #11812, caused by the fact that `NameU`s don't always work when other Names would. So I have to squeeze out `NameU`s in one spot.

Richard