Every production compiler's symbol table (LLVM's StringPool, Python's identifier interning) uses exactly this hash-and-dedupe technique so that identifier comparison during parsing and type-checking is a single pointer compare instead of a strcmp, which matters when a codebase has millions of identifier occurrences. Java's String.intern() and the JVM's constant pool formalize the same idea at the language level, turning what would be O(n) string comparisons into O(1) ones across an entire program.