The package name + module name is always unique in every Haskell program, module names can not be duplicated in a package and package names are unique also.
There are 2 kinds of identifiers, local and exported.
You can construct a whole program unique name for:
It is safe because only the exported names can appear in an external expression and those do not contain the GHC's unique value.
Just think about how the object code linker deals with GHC symbols.

Cheers,
Csaba

On Sat, Dec 1, 2018 at 1:23 PM Christopher Done <chrisdone@gmail.com> wrote:
I think what Csaba means is that we can have e.g.

* GHC invocation 1
  * ghc-prim:
    * MyModule.foo has Unique 123
    * OtherModule.bar has Unique 124
* GHC invocation 2
  * base:
    * MyMod.mu has Unique 123
    * OtherMod.zot has Unique 124

For a unique reference then, we just need:

* ghc-prim:MyMobile.foo+123
* ghc-prim:OtherModule.bar+124
* base:MyMod.mu+123
* base:OtherMod.zot+124

For any local lookup this is reliable. If the lookup fails, a lookup
without the Unique works for cross-module lookups.