名义角色
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