generated at
Open Type Synonym Family
TypeFamiliesでのSynonym Familyの定義方法の一つ
toplevelで宣言する


型の型と実装を別の場所に書く
あとから、外部から追加できる
つまりopen
kindを推論できない
hs
type family If (c :: Bool) t f type instance If 'True t f = t type instance If 'False t f = f

kind注釈は書いても書かなくても良い
hs
type family Add m n
hs
type family Add m n :: Nat -> Nat -> Nat