Я пытаюсь найти объяснение расширения DataKinds, которое будет иметь смысл для меня, если я прочитал Learn You a Haskell. Есть ли стандартный источник, который будет иметь смысл для меня с тем, что я узнал?
Изменить: например, документация говорит
С -XDataKinds GHC автоматически продвигает каждый подходящий тип данных быть добрым, а его конструкторы (значения) должны быть конструкторами типов. Следующие типы
и дает пример
data Nat = Ze | Su Nat
возникают следующие типы и конструкторы типов:
Nat :: BOX
Ze :: Nat
Su :: Nat -> Nat
Я не понимаю. Хотя я не понимаю, что означает BOX
, утверждения Ze :: Nat
и Su :: Nat -> Nat
, похоже, указывают, что обычно нормально, что Ze и Su являются нормальными конструкторами данных точно так, как вы ожидали бы видеть с помощью ghci
Prelude> :t Su
Su :: Nat -> Nat