module type BaseId = sig ... endGeneric identifier type
module type Id = sig ... endmodule type UnitId = sig ... endFully qualified identifiers
module Id : functor (E : sig ... end) -> IdIf applied generatively, i.e.
Id(struct end), creates a new type of identifiers.
module UnitId : functor (Id : Id) -> functor (Compilation_unit : Identifiable.Thing) -> UnitId with module Compilation_unit := Compilation_unit