
#7619: Make worker-wrapper unbox data families ---------------------------------+------------------------------------------ Reporter: akio | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.7 Keywords: type family | Os: Unknown/Multiple Architecture: Unknown/Multiple | Failure: None/Unknown Difficulty: Unknown | Testcase: Blockedby: | Blocking: Related: | ---------------------------------+------------------------------------------ Changes (by simonpj): * difficulty: => Unknown Comment: Yes absolutely. The trick here is that * To get from `(Foo Int)` to the underlying data type involves generating a coercion. * So if `foo` wants to unbox its argument, the worker/wrapper code must include coercions. * Where do those coercions come from? You need the type-family instance environment, and even then it's a bit dodgy to be looking them up in the optimiser. * Or maybe we can gather them from the code itself during analysis, and keep them in the demand signature. Same thing happens in CPR I think -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7619#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler