有没有一个Haskell库可以让我拥有从范围到值的Map?(最好是相对高效的)
let myRangeMap = RangeMap [(range 1 3, "foo"),(range 2 7, "bar"),(range 9 12, "baz")]
in rangeValues 2
==> ["foo","bar"]
有没有一个Haskell库可以让我拥有从范围到值的Map?(最好是相对高效的)
let myRangeMap = RangeMap [(range 1 3, "foo"),(range 2 7, "bar"),(range 9 12, "baz")]
in rangeValues 2
==> ["foo","bar"]
rangemin
库可以满足你的需求?Data.Map
(以及效率更高的Data.IntMap
)有一个函数。splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)
这个功能将一个地图分成小的子地图,其中键小于/大于给定的键。这可以用于某些类型的范围搜索。
lookupLE
和其他新的方法,对于这个目的来说更加高效,因为它们不需要构建新的树。 - dfeuer