[GHC] #10797: Kind-level functional dependencies are not resolved properly

GHC ghc-devs at haskell.org
Wed Aug 26 19:18:30 UTC 2015


#10797: Kind-level functional dependencies are not resolved properly
-------------------------------------+-------------------------------------
        Reporter:  danilo2           |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.10.2
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by danilo2):

 Here is even simpler example:
 {{{
 class BaseType (a :: k) (b :: l) | a -> b, k -> l where
     baseType :: Proxy a -> Proxy b

 instance {-# OVERLAPPABLE #-} BaseType (( (a :: l -> x) (t :: l)) ) (a ::
 l -> x) where baseType _ = Proxy
 }}}

 error:

 {{{
     Illegal instance declaration for ‘BaseType (a t) a’
       The liberal coverage condition fails in class ‘BaseType’
         for functional dependency: ‘k -> l’
       Reason: lhs type ‘x’ does not determine rhs type ‘l -> x’
     In the instance declaration for
       ‘BaseType (((a :: l -> x) (t :: l))) (a :: l -> x)’
 }}}

 where it seems again, that GHC cannot infer funded between {{{l -> x}}}
 and {{{l -> x}}}, "thinking" that LHS of funded is {{{x}}} instead of {{{l
 -> x}}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10797#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list