KindSignatures
kind推論に失敗するので付けたい
あるなら具体例を見たいmrsekut.icon
Natみたいに*じゃないやつを使うときとか?
code:before.hs
data Complex a b c = Complex (a (Maybe (b c)))
code:after.hs
data Complex (a :: * -> *) (b :: * -> *) (c :: *) = Complex (a (Maybe (b c)))
code:hs
data GadtsSample :: * -> * where
GadtsSample :: a -> GadtsSample a
GadtsSampleは、*を取って、*を返す
こう書いても同じ
code:hs
data GadtsSample (a :: *) where
GadtsSample :: a -> GadtsSample a
GadtsSampleは、*である型引数aを取る
コレ合ってる?
上の書き方と比べてわかりにくくない?mrsekut.icon
型引数が増えたときの例もみてみるとか
関数の型宣言みたいに別の行として書きたいよねmrsekut.icon
何でこのときだけtsの型宣言みたいな感じなんだ
code:purs(hs)
data Proxy :: forall k. k -> Type
data Proxy a = Proxy
参考