Unpacking polymorphic fields

Simon Peyton-Jones simonpj at microsoft.com
Wed Nov 15 05:58:23 EST 2006


Can you send a small example program for 'test'?

| -----Original Message-----
| From: glasgow-haskell-users-bounces at haskell.org [mailto:glasgow-haskell-users-bounces at haskell.org]
| On Behalf Of Takano Akio
| Sent: 15 November 2006 10:55
| To: glasgow-haskell-users at haskell.org
| Subject: Unpacking polymorphic fields
|
| Hi,
|
| Suppose I have the following two datatypes.
|
| data B = B {-# UNPACK #-} !Int
| data C a = C {-# UNPACK #-} !Char !a
|
| If I have a strict function:
|
| test :: C B -> IO ()
|
| I want it to be worker-wrapper-transformed into:
|
| $wtest :: Char# -> Int# -> State# RealWorld -> (# State# RealWorld, () #)
|
| but GHC actually generates something like:
|
| $wtest :: Char# -> B -> State# RealWorld -> (# State# RealWorld, () #)
|
| The question is: is there any way to ask GHC to produce the former?
| If the field is not polymorphic, UNPACK pragma can be used for this, but
| it does not work in this case. If there is no such way, would
| it be a reasonable "feature request" to add one?
|
| Regards,
| Takano Akio
| _______________________________________________
| Glasgow-haskell-users mailing list
| Glasgow-haskell-users at haskell.org
| http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


More information about the Glasgow-haskell-users mailing list