The range-set-list package

[Tags: library, mit]

Memory efficient sets with continuous ranges of elements. List based implementation. Interface mimics Data.Set interface where possible.


[Skip to ReadMe]

Properties

Versions0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7
Change logCHANGELOG.md
Dependenciesbase (>=4.5 && <5) [details]
LicenseMIT
CopyrightCopyright (c) 2013 Oleg Grenrus
AuthorOleg Grenrus
Maintaineroleg.grenrus@iki.fi
Stabilityexperimental
CategoryData Structures
Home pagehttps://github.com/phadej/range-set-list
Bug trackerhttps://github.com/phadej/range-set-list/issues
UploadedThu Jun 5 07:01:05 UTC 2014 by phadej
DistributionsNixOS:0.0.7
Downloads881 total (66 in last 30 days)
Votes
0 []
StatusDocs available [build log]
Successful builds reported [all 1 reports]

Modules

[Index]

Flags

NameDescriptionDefault
optimizedEnabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for range-set-list-0.0.7

range-set-list

Build Status

A trivial implementation of range sets.

You can find the package (and it's 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

The implementation of RSet is based on list.

Compared to Data.Set, this module imposes also Enum restriction 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.