Remove overlapping instance HasServer (Verb … (Headers x a)) …
#1543
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
It is possible to apply a bit of elbow grease to remove some of the overlapping instances in the codebase. Those instances often go in the way of refactoring, and sometimes creep up to the user in confusing messages, so it would be helpful to get rid of them.
The main challenge is backward-compatibility: we want to avoid breaking our users code, so we cannot change the API.
This PR experiments with an approach to do so, using a closed type-family definition. Closed type family instances are ordered, which lets us work around the need for overlapping instances.