range-set-list alternatives and similar packages
Based on the "data" category.
Alternatively, view range-set-list alternatives based on common mentions on social networks and blogs.
-
interpolatedstring-perl6
QuasiQuoter for Perl6-style multi-line interpolated strings with q, qq and qc support. -
language-hcl
language-hcl contains HCL (Hashicorp Configuration Language) parsers and pretty-printers for the Haskell programming language -
data-structure-inferrer
A program that analyzes source code with a data-structure wildcard and suggests the right one.
SaaSHub - Software Alternatives and Reviews
Do you think we are missing an alternative of range-set-list or a related project?
README
range-set-list
A few trivial implementations of range sets.
You can find the package (and its documentation) on hackage.
This module is intended to be imported qualified, to avoid name clashes with Prelude functions, e.g.,
import Data.RangeSet.List (RSet)
import qualified Data.RangeSet.List as RSet
This package contains two implementations of exactly the same interface, plus one specialization, all of which provide exactly the same behavior:
- "Data.RangeSet.List" implements the simplest
RSet
based on list. Set construction and manipulation is most efficient for this version, but lookups may require a full list traversal. - "Data.RangeSet.Map" implements a slightly less simple
RSet
based on map. Construction and manipulation have more overhead in this version, but lookups are significantly faster, especially for large sets. - "Data.RangeSet.IntMap" is simply a specialization of "Data.RangeSet.Map" to Ints based on IntMap.
Compared to Data.Set
,
this module also imposes an Enum
constraint for many functions.
We must be able to identify consecutive elements to be able to glue and split ranges properly.
The implementation assumes that
x < succ x
pred x < x
and there aren't elements in between (not true for Float
and Double
).
Also succ
and pred
are never called for largest or smallest value respectively.