The price of abstracting away from the type of identifiers
Making the type of identifiers a parameter in the abstract syntax required
analogous changes to many other types and classes...
It would have been easier
if one could add a type parameter to a module instead of adding it to
every definition in the module...