Hash-consing is a technique to share values that are structurally equal. Beyond the obvious advantage of saving memory blocks, hash-consing may also be used to speed up fundamental operations and data structures by several orders of magnitude when sharing is maximal. This paper introduces an OCAML hash-consing library that encapsulates hash-consed terms in an abstract datatype, thus safely ensuring maximal sharing. This library is also parameterized by an equality that allows the user to identify terms according to an arbitrary equivalence relation.
The hashing techniques used in this paper is reminiscent of hash-consing [Filliâtre and REF , a technique to share values that are structurally equal.
Type-safe modular hash-consing
ML '06
Computer Science