[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