<div dir="ltr">glad that helped, definitely helped me</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 27, 2015 at 3:29 PM, David Turner <span dir="ltr"><<a href="mailto:dct25-561bs@mythic-beasts.com" target="_blank">dct25-561bs@mythic-beasts.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 27 January 2015 at 17:23, Charles Durham <<a href="mailto:ratzes@gmail.com">ratzes@gmail.com</a>> wrote:<br>
> You need to sign up for it, but this is a phenomenal talk by simon peyton<br>
> jones describing the idea behind lenses the way he understood it.<br>
><br>
> <a href="https://skillsmatter.com/skillscasts/4251-lenses-compositional-data-access-and-manipulation" target="_blank">https://skillsmatter.com/skillscasts/4251-lenses-compositional-data-access-and-manipulation</a><br>
<br>
</span>Thanks, I think that was exactly what I needed to know.<br>
<br>
If I understand the key section right, you can do all that stuff with<br>
a straight get/set pair but it'd be desperately inefficient, so then<br>
you add an update function, and then one at Maybe and [] and IO and<br>
they all start to look the same so you generalise to all Functors, and<br>
then you discover that using Const you get a getter, and Identity<br>
gives you a setter, so you can throw them away and end up with a lens<br>
as we know it.<br>
<br>
And then you generalise it in about a billion other directions and you<br>
end up with the lens library!<br>
<br>
Much obliged,<br>
<br>
David<br>
</blockquote></div><br></div>