
#10595: BuiltinRules override other rules in some cases. -------------------------------------+------------------------------------- Reporter: gjsimms | Owner: Type: bug | Status: new Priority: high | Milestone: Component: Compiler | Version: 7.10.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Blocked By: Test Case: | Related Tickets: Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- It seems that the Class op * rules will override a user defined rule for class functions. This seems to be a long outstanding issue: http://stackoverflow.com/questions/9811294/rewrite-rules-not-firing-for- rules-matching-multiple-instance-methods I also just ran into someone else on the haskell IRC channel who had an even simpler example then the one on that page: {{{#!hs {-# NOINLINE d #-} {-# RULES "d exp" d exp = exp #-} d :: (Double -> Double) -> (Double -> Double) d f = f . (+20.0) g :: Double -> Double g = (+5.0) main = do print $ d exp 1.0 -- FAIL should print 2.718281828459045 >> printed exp 21.0 instead print $ d g 3.0 -- PASS should print 28.0 -- Compiled with: -- ghc -fenable-rewrite-rules -O rules.hs }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10595 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler