
#9214: UNPACK support for sum types -------------------------------------+------------------------------------- Reporter: mojojojo | Owner: osa1 Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D1540 Wiki Page: UnpackedSumTypes | Phab:D1559 -------------------------------------+------------------------------------- Comment (by dfeuer): One special case is a GADT with one constructor that takes one argument without any class context. For instance {{{#!hs data Foo a = This a | That a a data Bar a b where Bar :: !(Foo a) -> Bar a a data Baz where Baz :: !(Foo a) -> Baz }}} It would be great to be able to unpack `Foo` into `Bar` and `Baz`. Matching on the `Bar` or `Baz` constructor would force its contents to WHNF and reveal the evidence/open the existential. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9214#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler