Skip to content

Cleanup of definitional modules #463

@L0neGamer

Description

@L0neGamer

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions