The module contains a generic lookup table, i.e., a dictionary or finite map for keys which can be converted into an integer value. It will be used with different types of keys at various places throughout the compiler. The table, as said, is generic.
In the implementation of [App98b], the functor IntMapTable (which in turn uses the IntBinaryMap library module) is used to implement the symbol table module, which is an instantiation of the functor with symbols taken for the keys. In our implementation, the symbol module is implemented independantly. Where is the functor used throughout?
An alternative imperative implementation could use the hashtables from the library instead. The problem with the imperative implementation is, that Ocaml does not allow polymorphic types at that place for reasons of type safety. An older version of the symbol tables used indeed an imperative implementation. The older version of the symbol tables is, it seems, kept in lib/ocaml.,