Я создал очень простой пример проблемы, с которой я пользуюсь GADT и DataKinds. Мое реальное применение явно сложнее, но это ясно отражает суть моей ситуации. Я пытаюсь создать функцию, которая может
Так что давайте говорить, что я написал несколько type-level program в Haskell: type family NAryFn (n::Nat) (dom::*) (cod::*) :: *
type instance NAryFn Ze dom cod = cod
type instance NAryFn (Su n) d