
#15226: GHC doesn't know that seq# produces something in WHNF -------------------------------------+------------------------------------- Reporter: dfeuer | Owner: (none) Type: bug | Status: merge Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.4.3 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:D4796 Wiki Page: | -------------------------------------+------------------------------------- Comment (by dfeuer): I'm also not sure it's worth the trouble, although the current state of affairs seems a bit tricky to document in the Haddocks for `evaluate`. But considering `Control. Parallel.Strategies.rdeepseq`, I realized that even this binder swap, in combination with what I've already done, isn't really quite enough. Suppose we have {{{#!hs let e = x + 3 :: Int in case seq# e s of (# s', e' #) -> E }}} We'd actually like to know that not only `e` and `e'`, but also `x`, are evaluated in `E`, because `e` is strict in `x`. So if we do a binder swap, we should do it for all the variables the scrutinee is strict in that are not already known to be evaluated. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15226#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler