名義角色

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