-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove use of Obj.magic and make the library Type-Safe #34
Conversation
This file contains 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
In particular this allows to show that with the changes to make the library Type-Safe, the definition of such trait is no longer possible by design. This is possible to show using mdx files since we can capture type errors in expect traces, whereas in the test/ we simply have to delete these tests.
- This is joint work with @v-gb
v-gb
approved these changes
Oct 31, 2024
This was referenced Oct 31, 2024
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.
This PR re-designs the way traits are defined in order to remove the need for
Obj.magic
in the implementation.As a high-level description, we'll say that we no longer expose the implementation of Traits. Instead we force Traits to be created through applications of functors, thanks to which we manage to express the casting function that we need to replace the unsafe one.
This work is done in collaboration with @v-gb.
This addresses the concerns discussed here #19.
Fixes #33.