代表角色

类型函数的参数参数的示例:

data List a = Nil | Cons a (List a)

type family DoNotInspect x
type instance DoNotInspect x = List x

这里 x 是参数化的,因为要确定将 DoNotInspect 应用于类型参数的结果,类型函数不需要检查 x

在这种情况下,x 的作用是具有代表性的。我们可以使用 RoleAnnotations 扩展声明该角色:

type role DoNotInspect representational