#8848: Warning: Rule too complicated to desugar -------------------------------------+------------------------------------ Reporter: carter | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.1-rc2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by Simon Peyton Jones <simonpj@…>): In [changeset:"41ba7ccb742278de0abf32cb7571c71b150997a3/ghc"]: {{{ #!CommitTicketReference repository="ghc" revision="41ba7ccb742278de0abf32cb7571c71b150997a3" Improve the desugaring of RULE left-hand-sides (fixes Trac #8848) I've added detailed comments with Note [Decomposing the left-hand side of a RULE] The result is a noticeable improvement. Previously * we rejected a perfectly decent SPECIALISE (Trac #8848) * and for something like f :: (Eq a) => b -> a -> a {-# SPECIALISE f :: b -> [Int] -> [Int] #-} we ended up with RULE f ($fdEqList $dfEqInt) = f_spec whereas we wanted RULES forall (d:Eq [Int]). f d = f_spec }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8848#comment:1> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler