[Haskell-cafe] Orphan instances

Henning Thielemann lemming at henning-thielemann.de
Wed Mar 5 01:53:19 EST 2008


Consider the following modules


module A

class A t


module T

import A

data T a


module B

import A
import T

class A t => B t

instance B t => A (T t)



GHC emits warning about orphan instance A (T t), since neither A nor T are 
defined in B. However I can't move the instance to A or T since it depends 
on B. Would it be fine to lift the restriction, such that it is accepted 
to declare the instance in a module where the type or the class or a 
superclass (this is new) is defined?


In my example class B provides conversion toInteger (that is Integral), 
class A provides conversion toRational (that is Real) and T is Ratio.


More information about the Haskell-Cafe mailing list