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-boun...@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


_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to