freer-simple icon indicating copy to clipboard operation
freer-simple copied to clipboard

Use lenses to permit "focusing" on a State effect

Open jwiegley opened this issue 3 years ago • 0 comments

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-simple library 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 lens as 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 like fused-effects.

jwiegley avatar Aug 02 '22 17:08 jwiegley