From HaskellWiki
Jump to navigation Jump to search

Roles are a feature introduced with GHC 7.8 to discern the difference between compile-time type equality (introduced by type synonyms and type families) and runtime type equality (introduced by newtypes).

See the developer wiki page on roles and the draft paper for useful information.

If you need to put role annotations (described in the linked pages above) in your code, you may want to check out the no-role-annots package, which allows you to write role annotations without using the new -XRoleAnnotations extension.