型制約種
Constraint
*以外のkindの一つ
code:prelude
:k Eq
Eq :: * -> Constraint
:k Monad
Monad :: (* -> *) -> Constraint
dataで定義されたものは別
こっちは*ができる
code:prelude
// 普通のもの
:k (Bool, Int)
(Bool, Int) :: *
// 型制約種のもの
:k (Monad Maybe, Monoid Bool)
(Monad Maybe, Monoid Bool) :: Constraint
(Constraint, Constraint, .. )を受け取り、全てを満たすConstraintを返す
参考