Closed
Description
When trying to deriveArgDict
for "large" types with many constructors, we can run into the limit of the maximum tuple arity (62) in GHC when collecting constraints.
A toy example of this is:
data C1 = C1
data C2 = C2
data C3 = C3
...
data C62 = C62
data C63 = C63
data Large a where
L1 :: Large C1
L2 :: Large C2
L3 :: Large C3
...
L62 :: Large C62
L63 :: Large C63
deriveArgDict ''Large
Gives this error:
• Constraint tuple arity too large: 63 (max arity = 62)
Instead, use a nested tuple
• In the type ‘(c_a3rNa C1, c_a3rNa C2, c_a3rNa C3, c_a3rNa C4,
c_a3rNa C5, c_a3rNa C6, c_a3rNa C7, c_a3rNa C8, c_a3rNa C9,
c_a3rNa C10, c_a3rNa C11, c_a3rNa C12, c_a3rNa C13, c_a3rNa C14,
c_a3rNa C15, c_a3rNa C16, c_a3rNa C17, c_a3rNa C18, c_a3rNa C19,
c_a3rNa C20, c_a3rNa C21, c_a3rNa C22, c_a3rNa C23, c_a3rNa C24,
c_a3rNa C25, c_a3rNa C26, c_a3rNa C27, c_a3rNa C28, c_a3rNa C29,
c_a3rNa C30, c_a3rNa C31, c_a3rNa C32, c_a3rNa C33, c_a3rNa C34,
c_a3rNa C35, c_a3rNa C36, c_a3rNa C37, c_a3rNa C38, c_a3rNa C39,
c_a3rNa C40, c_a3rNa C41, c_a3rNa C42, c_a3rNa C43, c_a3rNa C44,
c_a3rNa C45, c_a3rNa C46, c_a3rNa C47, c_a3rNa C48, c_a3rNa C49,
c_a3rNa C50, c_a3rNa C51, c_a3rNa C52, c_a3rNa C53, c_a3rNa C54,
c_a3rNa C55, c_a3rNa C56, c_a3rNa C57, c_a3rNa C58, c_a3rNa C59,
c_a3rNa C60, c_a3rNa C61, c_a3rNa C62, c_a3rNa C63)’
In the type instance declaration for ‘Dep.ConstraintsFor’
In the instance declaration for ‘Dep.ArgDict c_a3rNa Large’
|
| Dep.deriveArgDict ''Large
| ^^^^^^^^^^^^^^^^^^^^^^^^^
Metadata
Assignees
Labels
No labels