I want to use custom constraints to help curb combinatorial explosion:
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
class DifferentTypes a b
type DifferentTypes3 a b c = (DifferentTypes a b, DifferentTypes b c, DifferentTypes a c)
When I use my custom constraint, this code fails to compile:
class Foo a
class Bar a
instance (DifferentTypes3 a b c, Bar a, Bar b, Bar c) => Foo (a, b, c)
But when I instead manually write out my constraints, it compiles:
class Foo a
class Bar a
instance (DifferentTypes a b, DifferentTypes b c, DifferentTypes a c, Bar a, Bar b, Bar c) => Foo (a, b, c)
Is this a bug, or am I missing something?