Ralf wrote:
> class C1 x
>  where
>  m1 :: x -> ()
>  m1 = const undefined

> instance (C1 x, C1 y) => C1 (x,y)
> instance C1 Bool
> instance (C2 x y, C1 (y,Bool)) => C1 x

> class C2 x y | x -> y
> instance C2 Int Int

> bar :: ()
> bar = m1 (1::Int)

I believe it works very well (meaning bar typechecks and even runs)
if we either add an instance 
        instance C1 Int
or change the instance of C2 to
        instance C2 Int Bool
Otherwise, the problem really has no solution, and looping is an
indication. I used GHC 6.8.3....
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to