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