这种约束典型的涉及到一个类型类codice_1和一个codice_2，并意味着codice_2所能实例化的类型，其成员必须支持关联于codice_1的重载运算。类型类首先在Haskell中实现，当时和Stephen Blott提出它，作为对Standard ML的“eqtypes”的扩展，并且最初构想为以本原方式实现重载算术及等式算符的一种途径。对比于Standard ML的“eqtypes”，在Haskell中通过使用类型类重载等式算符，不要求编译器前端或底层类型系统的广泛修改。自从它们创立之后