
#11735: Optimize coercionKind -------------------------------------+------------------------------------- Reporter: goldfire | Owner: (none) Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by simonpj): * cc: goldfire (added) Comment: Great. Next step: 1. We should not spend 20% our time in `CoreTidy`, I think. Drill down. 2. Something is clearly wrong with `Simplify.simplCast`. I think I know what it is. Given {{{ (fun |> co) @t1 @t2 ... @tn }}} we will call `pushCoTyArg` `n` times, and hence does `n` singleton substitutions, via the `n` calls to `piResultTy`. Solution: gather up those type arguments (easy) and define {{{ pushCoTyArgs :: Coercion -> [Type] -> Maybe ([Type], Coercion) }}} using an accumulating substitution. I spent a few minutes trying to write down `pushCoTyArgs` but my brain melted in a mess of kind casts, and I ran out of time. '''Richard''' can you help with (2), please? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11735#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler