2016-03-12 3 views
5

распаковывать поддерживает нормальные типы данных, как показано в следующем:Haskell: GADT с UNPACK Прагма

data T = T {-# UNPACK #-} ! Int 

Но есть способ использовать распаковывать Pragma с GADT?

ответ

8

Пробовал и обнаружил, что он действительно работает с аргументами функции конструктора.

data BinHeap a where 
    Empty :: (Ord a) => BinHeap a 
    HeapNode :: (Ord a) => a -> {-# UNPACK #-} !Int -> BinHeap a -> BinHeap a -> BinHeap a 

Nice.

Смежные вопросы