generated at
KindSignatures
kind注釈をつけられるGHC拡張


無くてもkind推論されるが可読性のために付けたい
kind推論に失敗するので付けたい
というケースもある #??
あるなら具体例を見たいmrsekut
Nat みたいに * じゃないやつを使うときとか?


ref
before.hs
data Complex a b c = Complex (a (Maybe (b c)))
after.hs
data Complex (a :: * -> *) (b :: * -> *) (c :: *) = Complex (a (Maybe (b c)))


GADTsとよく併用される

hs
data GadtsSample :: * -> * where GadtsSample :: a -> GadtsSample a
GadtsSample は、 * を取って、 * を返す
こう書いても同じ
hs
data GadtsSample (a :: *) where GadtsSample :: a -> GadtsSample a
GadtsSample は、 * である型引数 a を取る
コレ合ってる?
上の書き方と比べてわかりにくくない?mrsekut
型引数が増えたときの例もみてみるとか



関数の型宣言みたいに別の行として書きたいよねmrsekut
何でこのときだけtsの型宣言みたいな感じなんだ
pursはそれができる ref
purs(hs)
data Proxy :: forall k. k -> Type data Proxy a = Proxy



参考