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