[GHC] #12640: Class member functions not substituted for MultiParamTypeClasses
GHC
ghc-devs at haskell.org
Thu Sep 29 00:19:50 UTC 2016
#12640: Class member functions not substituted for MultiParamTypeClasses
-------------------------------------+-------------------------------------
Reporter: jeremy-list | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: Runtime
Unknown/Multiple | performance bug
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
When the following code is compiled with "-O2 -ddump-rule-firings" the
rule is not fired: presumably because the simplifier does not recognize
that (+++) = ex_or.
{{{#!hs
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
class Ex2 a b c | a b -> c where
(+++) :: a -> b -> c
instance Ex2 Bool Bool Bool where
(+++) = ex_or
{-# INLINE [2] ex_or #-}
ex_or = (||)
{-# RULES
"force-inline" forall a b . ex_or a b = a || b
#-}
main = print (True +++ True)
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12640>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list