2016-03-12 55 views
5

rozpakować obsługuje normalnych typów danych, jak pokazano w poniższym przykładzie:Haskell: GADT z Rozpakować Pragma

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

Ale czy istnieje sposób na wykorzystanie rozpakować Pragma z GADT?

Odpowiedz

8

Próbowałem go i stwierdziłem, że działa on z argumentami funkcji Konstruktora.

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

Nice.