
#15617: Unboxed tuples/sum error message on `a = show 5` in expression evaluation and interactive modes -------------------------------------+------------------------------------- Reporter: ChaiTRex | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.6.1-beta1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Poor/confusing | Unknown/Multiple error message | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by osa1): * cc: simonpj (added) Comment: This is because the simplifier introduces a call to a worker function that returns an unboxed tuple. This is the original expression: {{{ -- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0} a :: String [LclIdX] a = show @ Integer GHC.Show.$fShowInteger 5 }}} The simplifier transforms this to {{{ -- RHS size: {terms: 4, types: 1, coercions: 0, joins: 0/0} a :: String [LclIdX, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=False, ConLike=False, WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 140 0}] a = GHC.Show.$fShowInteger_$cshowsPrec GHC.Show.$fShow(,)1 5 (GHC.Types.[] @ Char) }}} and then {{{ -- RHS size: {terms: 9, types: 11, coercions: 0, joins: 0/0} a :: String [LclIdX, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=False, ConLike=False, WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 160 30}] a = case GHC.Show.$w$cshowsPrec4 0# 5 (GHC.Types.[] @ Char) of { (# ww3_a1Xd, ww4_a1Xe #) -> GHC.Types.: @ Char ww3_a1Xd ww4_a1Xe } }}} Here the scrutinee returns an unboxed tuple, and we can't compile this expression to bytecode. Some ideas: - Ignore optimization settings in GHCi and always compile things with all optimizations disabled, to avoid introducing unboxed tuples and sums as a result of inlining worker functions etc. - Somehow teach simplifier to not introduce unboxed tuples/sums (seems like too much work, we may be able to implement unboxed tuple/sum support with same effort). - Implement unboxed tuple and sum support for GHCi. - Improve error message and mention that this may happen as a result of optimizations (maybe only show this if optimizations are enabled). Any other ideas? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15617#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler