Introduce matched_string#34
Merged
Merged
Conversation
325eca2 to
7d4a809
Compare
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.
val matched_string: (_, 'a) t -> string patternThis takes any regexp, discards the value, and returns the string matched by the pattern.
I first made a version where evaluability was preserved, but it did not work with
prefixorsuffix, as they destroy information about the value that is still visible in the matched string.Maybe there is way around that where
matched_stringchanges the behaviour of the prefix and suffix it contains, but I don't really see a way to type this.Code for that can be found here, including the failing test.
The diff is very large because this is based on #33 , so its better to read the second commit.
I also noticed a that the types for prefix and suffix where wrong, this prevented me from writing the test I wanted to so I fixed it. There might be other case where this is an issue, I am not sure what the solution is given I have to to give the type
expressionto some things because of the value restriction (this is an false positive from the value restriction because the type is actually phantom, but can we show that to the compiler ?)