Er, oops.<br><br>...can be implemented as:<br>\a rs -&gt; let s = Set.fromList (rs &gt;&gt;= \(a, b) -&gt; [a..b]) in a `member` s<br><br>Something like that!<br><br><div class="gmail_quote">On Mon, Oct 29, 2012 at 2:48 PM, Tony Morris <span dir="ltr">&lt;<a href="mailto:tonymorris@gmail.com" target="_blank">tonymorris@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
I was wondering if anyone knows of a package implementing a fast lookup<br>
for an element in ranges.<br>
<br>
For example, this operation:<br>
Ord a =&gt; a -&gt; [(a, a)] -&gt; Bool<br>
<br>
...can be implemented:<br>
\a rs -&gt; let s = Set.fromList rs in a `member` s<br>
<br>
This is not particularly efficient. A segment tree seems like a more<br>
appropriate data structure to store the ranges. Does such a library exist?<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Tony Morris<br>
<a href="http://tmorris.net/" target="_blank">http://tmorris.net/</a><br>
<br>
<br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br>Tony Morris<br><a href="http://tmorris.net/">http://tmorris.net/</a><br>