Let's rewrite with explicit kind variables, noting that b is also poly-kinded:

class Dep k k2 (a :: k) (b :: k2) | a -> b k2
    -- if a determines b, it surely determines k2

instance Dep k * x y => Dep (Maybe k) * (Just x) (Maybe y)

Actually, even with the kinds explicit, it still looks valid to me. Post a bug 
report?

Richard

On Jul 31, 2015, at 9:54 AM, Gabor Greif <[email protected]> wrote:

> Hi all,
> 
> say I want to instantiate
> 
>    class Dep (a :: k) b | a -> b
> 
> as
> 
>    instance Dep x y => Dep (Just x) (Maybe y)
> 
> Is this supposed to work? I get "The coverage condition fails" errors.
> 
> For simple cases like
> 
>    instance Dep True Bool
> 
> etc. it seems to work fine.
> 
> Thanks and cheers,
> 
>    Gabor
> _______________________________________________
> ghc-devs mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to