是否有一个 Haskell 库可以让我拥有从范围到值的映射?(最好有点效率。)
let myRangeMap = RangeMap [(range 1 3, "foo"),(range 2 7, "bar"),(range 9 12, "baz")]
in rangeValues 2
==> ["foo","bar"]
是否有一个 Haskell 库可以让我拥有从范围到值的映射?(最好有点效率。)
let myRangeMap = RangeMap [(range 1 3, "foo"),(range 2 7, "bar"),(range 9 12, "baz")]
in rangeValues 2
==> ["foo","bar"]
我写了一个库来搜索重叠的时间间隔,因为现有的不适合我的需要。我认为它可能具有比 SegmentTree 更平易近人的界面:
https://www.chr-breitkopf.de/comp/IntervalMap/index.html
它也可以在 Hackage 上找到:https ://hackage.haskell.org/package/IntervalMap
也许rangemin
图书馆做你想做的事?
好老Data.Map
(及其更高效Data.IntMap
的表亲)有一个功能
splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)
它将映射拆分为小于/大于给定键的键的子图。这可用于某些类型的范围搜索。