Earlier studies have introduced a list of high-level evaluation criteria to assess how well a language supports generic programming. Since each language that meets all criteria is considered generic, those criteria are not fine-grained enough to differentiate between two languages for generic programming. We refine these criteria into a taxonomy that captures differences between type classes in Ha