generated at
高階型
Higher Kinded TypesHigher Rank TypeHKT
kind * → * な型
型を取って型を返す型
型に依存する型
* -> (* -> *) なども含む


高階型高階多相型を含む(たぶん)
Hoge (f a) kind (* -> *) -> * -> * 高階多相型
個別の * は多相であり制限はない
Show a => Hoge a kind * -> * な型だが、Showのインスタンスである必要があるので、たぶん多相な高階型とは言わない(?)
これも高階多相型と呼ぶなら、「高階型 == 高階多相型」なのでノートを分ける必要がない
他に候補がないかの確認は必要
実際にあるのか知らないが高階多相型ではない高階型があるイメージがある
高階多相関数ではない高階関数があるイメージ
関数.hs
f :: (a -> a) -> Bool -- 高階多相関数 f :: (Int -> Int) -> Bool -- 高階多相関数ではない高階関数
型.hs
-- この記述は架空 Hoge f a :: (* -> *) -> * -> * -- 高階多相型 Show a => Hoge a :: (Show => *) -> * -- 高階多相型ではない高階型(?) というよりも「制限のある高階多相型」かな
GADTKindSignaturesで制限を表現できる




参考