Use lenses to permit "focusing" on a State effect#39
Draft
jwiegley wants to merge 1 commit intolexi-lambda:masterfrom
Draft
Use lenses to permit "focusing" on a State effect#39jwiegley wants to merge 1 commit intolexi-lambda:masterfrom
jwiegley wants to merge 1 commit intolexi-lambda:masterfrom
Conversation
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.
A draft PR to show the concept....
One of the great things about algebraic effects is that they allow you to focus the range of effects needed by a function to its most limited set: the "weakest precondition of effects", if you will.
This PR shows a simple way to make this idea more flexible. For example, I often have an "application state" carried by an effect
State s, but many of my functions need only a part of this state, or they may need those parts only in read-only or append-only terms. It could be that I have a huge state, and my function needs read-only access to one part and read-write access to another part, but none of the rest.The current
freer-simplelibrary already makes this fairly easy to do, but users have to write the reinterpretations themselves. This PR offers a few combinators for lensing into state in these different ways.I doubt you'd want to include
lensas a dependency, but if you think it's useful maybe it could become its own library. I also want to see how this idea plays out in other libraries likefused-effects.