Open christopherjmblack opened 2 years ago
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:
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.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.