
#10451: Constraint tuple regression in HEAD -------------------------------------+------------------------------------- Reporter: darchon | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | ConstraintKinds Type of failure: GHC rejects | Architecture: valid program | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Changes (by adamgundry): * cc: adamgundry (added) Comment: Oops! A possible workaround is to manually define an operator that gives nested pairs of constraints, like this: {{{ type (x :: Constraint) :* (y :: Constraint) = (x, y) type ManyEq2 a = Eq a :* Eq a :* Eq a :* Eq a :* Eq a :* Eq a :* Eq a :* Eq a :* Eq a }}} Alternatively, a type family can be used to expand a list of constraints into nested pairs: {{{ type family All (xs :: [Constraint]) :: Constraint where All '[] = () All (c ': cs) = (c, All cs) type ManyEq3 a = All '[Eq a, Eq a, Eq a, Eq a, Eq a, Eq a, Eq a, Eq a, Eq a] }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10451#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler