[GHC] #11999: expressing injectivity on functional dependencies gives orphan instances warnings

GHC ghc-devs at haskell.org
Sat Apr 30 09:34:05 UTC 2016


#11999: expressing injectivity on functional dependencies gives orphan instances
warnings
-------------------------------------+-------------------------------------
           Reporter:  dredozubov     |             Owner:
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  7.10.3
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Class.hs
 {{{
 {-# LANGUAGE DataKinds, FlexibleInstances, FunctionalDependencies,
 KindSignatures, MultiParamTypeClasses, TypeFamilies #-}

 module Class where

 class C a b | a -> b, b -> a
 }}}

 Lib.hs
 {{{
 {-# LANGUAGE DataKinds, FlexibleInstances, MultiParamTypeClasses,
 TypeFamilies #-}

 module Lib where

 import Class


 newtype Local = Local ()

 instance C Local ()
 }}}

 gives

 {{{
 /Users/dr/workspace/broken-ophans-ghc/src/Lib.hs:10:1: warning:
 [-Worphans]
     Orphan instance: instance C Local ()
     To avoid this
         move the instance declaration to the module of the class or of the
 type, or
         wrap the type with a newtype and declare the instance on the new
 type.
 }}}

 It seems weird to me and it is either a bug in the orphan instances
 checker or there is some fundamental aspect which i don't undestand. I've
 been able to reproduce this with 7.10.3 and 8-rc4.
 I've compiled a git repo with minimalistic example of this:
 [https://github.com/dredozubov/broken-instances-minimal]

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


More information about the ghc-tickets mailing list