
I think this is a very reasonable suggestion. It would take some work to implement, but nothing fundamental. Simon From: Glasgow-haskell-users [mailto:glasgow-haskell-users-bounces@haskell.org] On Behalf Of Nicholas Clarke Sent: 20 January 2015 13:08 To: glasgow-haskell-users@haskell.org Subject: Fwd: UNPACK Existential datatype I'd like to be able to use the UNPACK pragma on an existentially quantified datatype. So as in the below example: {-# LANGUAGE ExistentialQuantification #-} data Foo = forall a. Show a => Foo !a instance Show Foo where show (Foo a) = "Foo! " ++ show a data Bar = Bar {-# UNPACK #-} !Foo deriving (Show) main :: IO () main = do let foo = Foo "Hello" bar = Bar foo print bar I would expect the `Foo` constructor to be unpacked into Bar, as if I had written: data Bar = forall a. Show a => Bar !a However, instead I get the 'Ignoring unusable UNPACK pragma on the first argument of ‘Bar’' warning. Is there a reason this shouldn't work, or a workaround to get it to do so? Cheers, Nick