名义角色

Haskell Wiki 有一个类型函数的非参数参数的示例:

type family Inspect x
type instance Inspect Age = Int    
type instance Inspect Int = Bool

这里 x 是非参数的,因为要确定将 Inspect 应用于类型参数的结果,类型函数必须检查 x

在这种情况下,x 的作用是名义上的。我们可以使用 RoleAnnotations 扩展声明该角色:

type role Inspect nominal