You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Just to narrow down the example; the difference is between lens.Each().Parts() and lens.Each() & lens.Parts().
This is really an unfortunate api by me. I tried to make lens.Parts work more or less the same way as the other methods so that you could just tack it onto the end of a method chain and it would do what you want, but as you can see this breaks composition. In the underlying implementation the first one is really doing something like parts(each()) & f(sum) while the second is roughly each() & parts(identity()) & f(sum).
Possible solutions:
Change the syntax to be more representative of the underlying structure. lens.Parts would now take an argument which is the lens that you want it to apply to. The example would have to be written as lens.Parts(lens.Each()).F(sum).get()([1,2,3]). This would break existing code.
Document the problem and tell people to be careful mixing lens.Parts with composition.
The following two snippets produce different results:
The following appears to me to be correct:
Whereas I think this is a bug:
I'm using python-lenses 1.1.0, running in python 3.9.13.
The text was updated successfully, but these errors were encountered: