2016-03-12 50 views
5

ESTRAZIONE supporta normali tipi di dati, come mostrato nella figura seguente:Haskell: GADT con ESTRAZIONE Pragma

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

Ma c'è un modo per utilizzare il Pragma ESTRAZIONE con GADT?

risposta

8

Provato e trovato che effettivamente funziona con argomenti di funzione del costruttore.

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

Nice.