Повышение типа данных для зависимого от вызова

После прочтения ghc 7.4. примечания к предварительному выпуску и статья Giving 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

Какое использование они имеют как виды? Можете ли вы привести примеры (кода)?

36
задан nponeccop 22 December 2011 в 13:48
поделиться