I was going to set off on #459, but found it incredibly hard to navigate Test.QuickCheck.Arbitrary; typeclasses and instances are scatted across the two thousand lines of CPP'd instances, making it hard to track what is defined where.
I would suggest that we make two changes: firstly, move the classes into their own modules (Test.QuickCheck.Arbitrary.Class, Test.QuickCheck.Arbitrary1.Class, Test.QuickCheck.CoArbitrary.Class; or just move all the classes to a Test.QuickCheck.Arbitrary.Class); secondly, reorganise instance definitions either on a class by class basis (Test.QuickCheck.Arbitrary.Instances) or on a type origin by type origin basis (like in https://github.com/haskellari/qc-instances/tree/master/src/Test/QuickCheck/Instances, resulting in Test.QuickCheck.Instances.Semigroup and so on). This would result in many orphan instances, but those are easily resolved by exporting them from the same Test.QuickCheck.Arbitrary as before.
I'm happy to have a go at this, but thought I should ask before setting off.
I would also ask for guidance on what this breaking up and cleaning up should look like.
I was going to set off on #459, but found it incredibly hard to navigate
Test.QuickCheck.Arbitrary; typeclasses and instances are scatted across the two thousand lines of CPP'd instances, making it hard to track what is defined where.I would suggest that we make two changes: firstly, move the classes into their own modules (
Test.QuickCheck.Arbitrary.Class,Test.QuickCheck.Arbitrary1.Class,Test.QuickCheck.CoArbitrary.Class; or just move all the classes to aTest.QuickCheck.Arbitrary.Class); secondly, reorganise instance definitions either on a class by class basis (Test.QuickCheck.Arbitrary.Instances) or on a type origin by type origin basis (like in https://github.com/haskellari/qc-instances/tree/master/src/Test/QuickCheck/Instances, resulting inTest.QuickCheck.Instances.Semigroupand so on). This would result in many orphan instances, but those are easily resolved by exporting them from the sameTest.QuickCheck.Arbitraryas before.I'm happy to have a go at this, but thought I should ask before setting off.
I would also ask for guidance on what this breaking up and cleaning up should look like.