
[(Double,Double)] is not enough - you need to know if each end is open
or closed. Also note that you will have to use -infinity and +infinity
(-inf and +inf) to model things like the complement of (1.0,2.0).
Which brings me to a question: is there a better way to write -inf and
+inf in Haskell than "-1/0" and "1/0"?
Your data structure should be something like:
data Interval = Interval {
left :: Double,
leftopen :: Bool,
right :: Double,
rightopen :: Bool
}
data Set = Set [Interval]
If you want more efficiency, you probably want a bintree datastructure
(search Google for "quadtree" and "octree", and make the obvious
dimension shift).
--KW 8-)
--
Keith Wansbrough