[GHC] #7647: UNPACK polymorphic fields
GHC
cvs-ghc at haskell.org
Fri Feb 1 06:16:57 CET 2013
#7647: UNPACK polymorphic fields
------------------------------------+---------------------------------------
Reporter: liyang | Owner: simonpj
Type: feature request | Status: new
Priority: normal | Component: Compiler
Version: 7.6.1 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: Runtime performance bug | Blockedby:
Blocking: | Related: 3990
------------------------------------+---------------------------------------
comment:9:ticket:3990 mentions the possibility of unpacking polymorphic
fields. To quote:
[…]
What I mean by "polymorphic unpack" is this:
{{{
data Poly a = MkP Bool {-# UNPACK #-} a
data Mango = MkMango {-# UNPACK #-} (Poly Int)
}}}
Now a value of type Poly t would be represented using two pointer
fields, as usual (ie the UNPACK would have no direct effect on Poly). But
a Mango value would be represented thus:
{{{
data Mango = MkMangoRep Bool Int#
MkMango :: Poly Int -> MangoRep
MkMango (MkP b (I# i)) = MkMangoRep b i
-- Pattern match (MkMango p -> rhs)
-- is transformed to (MkMangoRep b i -> let p = MkP b (I# i) in rhs
}}}
Something like that would be rather nice. This ticket is just a reminder.
Thanks,[[br]]
/Liyang
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7647>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list