{-# OPTIONS -fglasgow-exts #-}
{-# OPTIONS -fallow-undecidable-instances #-}
{-# OPTIONS -fallow-overlapping-instances #-}

data Foo x y
class Bar x y | x -> y
class Zoo x y | x -> y

{-

Works for both GHC and Hugs

instance Bar (Foo x y) y
instance Bar (Foo (Foo x y) z) z

-}

{-

Works for GHC but not Hugs

-}

instance Zoo x r => Bar (Foo x y) r
instance Zoo x r => Bar (Foo (Foo x y) z) r



