Прочитав ghc 7.4. заметки перед выпуском и документ Предоставление Haskell a Promotion, я все еще смущен тем, что вы на самом деле делаете с продвинутыми типами. Например, в руководстве GHC приводятся следующие примеры продвинутых типов данных:
data Nat = Ze | Su Nat
data List a = Nil | Cons a (List a)
data Pair a b = Pair a b
data Sum a b = L a | R b
Какие виды использования имеют такие виды? Можете ли вы привести примеры (код)?