feat: allow EStateM
to be used universe-polymorphically
#3010
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 doesn't change
IO
orST
(such a change would be more invasive and require approval of #3011), but does enable downstream projects likeMathlib
to useEStateM
for their own purposes with full universe polymorphism.The alternative is defining an entire copy of
EStateM
, which is a lot of boilerplate.The generalized
EStateM.map
after this change can be invoked (in the non-monadic spelling) withULift.up
to move between universes. Previously it was only universe-monomorphic.There seems to be no cost associated behind this generalization, besides that one test of the new compiler has its log output reordered.