generated at
型制約種
Constraint
kindの一種
* 以外のkindの一つ
prelude
> :k Eq Eq :: * -> Constraint > :k Monad Monad :: (* -> *) -> Constraint
新たにHaskellの型クラスを作ることで、新たな Constraint ができる
data で定義されたものは別
こっちは * ができる

型制約のペアのkind
prelude
// 普通のもの > :k (Bool, Int) (Bool, Int) :: * // 型制約種のもの > :k (Monad Maybe, Monoid Bool) (Monad Maybe, Monoid Bool) :: Constraint
(Constraint, Constraint, .. ) を受け取り、全てを満たす Constraint を返す



参考