<p dir="ltr">I *believe* that the [] Applicative will prove that adjustA is sometimes more efficient than any implementation built on the current API. In that context, it should be possible to descend to a leaf once and then ascend from it many times.</p>
<p dir="ltr">foo n xs = adjustA f n xs where<br>
  f :: Char -> [Char]<br>
  f x = ...</p>
<p dir="ltr">This only travels to the nth element once and effectively saves the path to that spot so it can produce many sequences where that element is different. You could do something conceptually similar by splitting the sequence at that point and putting the pieces together many times, but in practice that would be awful.</p>
<div class="gmail_quote">On Apr 26, 2016 3:18 PM, "Marcin Mrotek" <<a href="mailto:marcin.jan.mrotek@gmail.com">marcin.jan.mrotek@gmail.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>Hello,<br><br></div>I don't feel qualified to take a stance on this, but since you did make a comment about "deafening silence" earlier on an unrelated issue, then, if this `adjustA` doesn't depend on any particular Lens library, and it's more efficient than any hand-rolled solution, then why not?<br><br></div>Best regards,<br></div>Marcin Mrotek<br></div>
</blockquote></div>