> The names are just pointers, and they're both pointing to the same definition in your example. But when you redefine one of those, you would point one of the names to a new definition.
But how do you know which name was called where if the callers referenced the content hash not the name?
I also think that the DNS analogy is wrong because all callers are hash-based. The only solution I see is to go through the list of all callers and manually update selected ones.
If I understand Unison right, the names are used only on the developer's layer(to write code), but when you save code, it's all hash-based.
Still, Unison got my attention.
Would it not be correct for those callers to keep calling the old (shared) implementation?
It's similar to how DNS can have two domains point to the same IP, but then you can change one of those domains point to a new IP.