Woops. I misread the original email then!

Yeah, unpacking sums could have an exponential blowup right?

On Sunday, June 15, 2014, Johan Tibell <johan.tibell@gmail.com> wrote:
GHC doesn't unpack sums, like B in the example.


On Sun, Jun 15, 2014 at 10:30 PM, Carter Schonwald <carter.schonwald@gmail.com> wrote:
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 <nikita.y.volkov@mail.ru> wrote:

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?



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe