Remove overlapping instance HasServer (Verb … (Headers x a)) …#1543
Open
gdeest wants to merge 1 commit into
Open
Remove overlapping instance HasServer (Verb … (Headers x a)) …#1543gdeest wants to merge 1 commit into
HasServer (Verb … (Headers x a)) …#1543gdeest wants to merge 1 commit into
Conversation
Verb … (Headers x a)HasServer (Verb … (Headers x a)) …
703d14e to
f9994cf
Compare
Contributor
|
@gdeest what's the state of this PR? Shall we wait for 0.21.0.0 or is it ok for 0.20.3.0? |
Contributor
Author
|
@tchoutri I had completely forgotten about that PR ... :-) I'd say it is urgent to wait and experiment a bit more with the approach before moving forward. I do remember overlapping instances in |
Contributor
|
@gdeest perfect, I'd be more than happy to pair with you on it in order to fully understand the approach. :) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.