You can also mix in &#39;first&#39; and &#39;second&#39; arbitrarily and read them directly from the type as well, when there is (possibly nested) pair structure on the way to the value being modified.&nbsp; That&#39;s why I call fmap, first, and second &quot;semantic editor combinators&quot;.&nbsp; Sometime soon I&#39;m going to blog about these tricks.<br>
<br>&nbsp; - Conal<br><br><div class="gmail_quote">On Tue, Nov 18, 2008 at 10:20 AM, Creighton Hogg <span dir="ltr">&lt;<a href="mailto:wchogg@gmail.com">wchogg@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br><br><div class="gmail_quote">On Tue, Nov 18, 2008 at 12:15 PM, Conal Elliott <span dir="ltr">&lt;<a href="mailto:conal@conal.net" target="_blank">conal@conal.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Also, a less forgetful version of subs might be useful:<br><br>&nbsp;&nbsp;&nbsp;&nbsp; withSubs xs e :: [a] -&gt; Event b -&gt; Event (b,a)<br><br>and then<br><br>&nbsp;&nbsp;&nbsp; subs xs e&nbsp; = snd &lt;$&gt; withSubs xs e<br><br>or, if you like,<br><br>
&nbsp;&nbsp;&nbsp; subs = (fmap.fmap.fmap) snd withSubs<br>

<br>Btw, you can read the three fmaps directly from the signature of withSubs (two arrows plus one Event on the way to the pair).<br><font color="#888888"><br>&nbsp; - Conal</font></blockquote></div><br></div>That&#39;s a cute trick with the number of fmap&#39;s required.&nbsp; Never thought of it that way.<br>

<br>Also, I&#39;d like to apologize for not mentioning quicksilver from #haskell in my last e-mail.&nbsp; An honest slip-up, but an inappropriate one.<br>
</blockquote></div><br>