On 8/20/07, <b class="gmail_sendername">apfelmus</b> &lt;<a href="mailto:apfelmus@quantentunnel.de">apfelmus@quantentunnel.de</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Andrew Wagner wrote:<br>&gt; It occurred to me that it would be useful to explicitly<br>&gt; have a Bi-directional Map, which does the maintenance of keeping the<br>&gt; Maps synchronized behind the scenes. Thus, Bimap was born!
<br><br>... most of the map functions (including&nbsp;&nbsp;update&nbsp;&nbsp;above) probably won&#39;t<br>work anyway, what should<br><br>&nbsp;&nbsp; left_insertWith (\new old -&gt; new) &#39;a&#39; 1 (fromList [(&#39;a&#39;,2),(&#39;b&#39;,1)])<br>
<br>do? I can&#39;t yield<br><br>&nbsp;&nbsp; fromList [(&#39;a&#39;,1),(&#39;b&#39;,1)]<br><br>since 1 has two keys now.<br></blockquote></div><br>Exactly. For this to work there needs to be the constraint that there&#39;s a one-to-one mapping in each direction. The Bimap should have the uniqueness promise that &quot;Set (k, v)&quot; gives. Yet you should be able to search on either tuple value.
<br clear="all"><br>-- <br>Rich<br><br>JID: <a href="mailto:rich@neswold.homeunix.net">rich@neswold.homeunix.net</a><br>AIM: rnezzy