
15 Jun
2014
15 Jun
'14
8:30 p.m.
Are you sure that's not supported? That seems like a bug if so. I'm away
from my computer right now so I can't check.
What ghc version? How are you checking if the unpack is firing?
Ghc 7.8 should by default be unpacking ALL strict small fields.
On Sunday, June 15, 2014, Nikita Volkov
Currently the pragma only supports single-constructor types. So in the following example it will simply be ignored:
data A = A1 Char | A2 {-# UNPACK #-} !B
data B = B1 Int | B2 Bool
However it seems to be easily solvable by changing the type A to something like the following during unpacking:
data A = A1 Char | A2_1 Int | -- from B1 A2_2 Bool -- from B2
Am I missing something? Why is it not implemented?