2016-03-12 13 views
5

UNPACK unterstützt eine normale Datentypen, wie im folgenden dargestellt:Haskell: GADT mit UNPACK Pragma

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

Aber gibt es eine Möglichkeit, die UNPACK Pragma mit GADT zu benutzen?

Antwort

8

Versucht es und festgestellt, dass es tatsächlich mit Konstruktorfunktion Argumente funktioniert.

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

Schön.