data-interval-1.3.0: Interval datatype, interval arithmetic and interval-based containers

Copyright(c) Masahiro Sakai 2016
LicenseBSD-style
Maintainermasahiro.sakai@gmail.com
Stabilityprovisional
Portabilitynon-portable (CPP, ScopedTypeVariables, TypeFamilies, DeriveDataTypeable, MultiWayIf)
Safe HaskellTrustworthy
LanguageHaskell2010

Data.IntervalSet

Contents

Description

Interval datatype and interval arithmetic.

Synopsis

IntervalSet type

data IntervalSet r Source #

A set comprising zero or more non-empty, disconnected intervals.

Any connected intervals are merged together, and empty intervals are ignored.

Instances

Ord r => IsList (IntervalSet r) Source # 

Associated Types

type Item (IntervalSet r) :: * #

Eq r => Eq (IntervalSet r) Source # 
(Real r, Fractional r) => Fractional (IntervalSet r) Source # 
(Ord r, Data r) => Data (IntervalSet r) Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IntervalSet r -> c (IntervalSet r) #

gunfold :: (forall b a. Data b => c (b -> a) -> c a) -> (forall a. a -> c a) -> Constr -> c (IntervalSet r) #

toConstr :: IntervalSet r -> Constr #

dataTypeOf :: IntervalSet r -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (IntervalSet r)) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (IntervalSet r)) #

gmapT :: (forall b. Data b => b -> b) -> IntervalSet r -> IntervalSet r #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IntervalSet r -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IntervalSet r -> r #

gmapQ :: (forall d. Data d => d -> u) -> IntervalSet r -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IntervalSet r -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IntervalSet r -> m (IntervalSet r) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IntervalSet r -> m (IntervalSet r) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IntervalSet r -> m (IntervalSet r) #

(Num r, Ord r) => Num (IntervalSet r) Source # 
(Ord r, Read r) => Read (IntervalSet r) Source # 
(Ord r, Show r) => Show (IntervalSet r) Source # 
Ord r => Semigroup (IntervalSet r) Source # 
Ord r => Monoid (IntervalSet r) Source # 
NFData r => NFData (IntervalSet r) Source # 

Methods

rnf :: IntervalSet r -> () #

Hashable r => Hashable (IntervalSet r) Source # 

Methods

hashWithSalt :: Int -> IntervalSet r -> Int #

hash :: IntervalSet r -> Int #

Ord r => JoinSemiLattice (IntervalSet r) Source # 
Ord r => MeetSemiLattice (IntervalSet r) Source # 
Ord r => Lattice (IntervalSet r) Source # 
Ord r => BoundedJoinSemiLattice (IntervalSet r) Source # 

Methods

bottom :: IntervalSet r #

Ord r => BoundedMeetSemiLattice (IntervalSet r) Source # 

Methods

top :: IntervalSet r #

Ord r => BoundedLattice (IntervalSet r) Source # 
type Item (IntervalSet r) Source # 

type EndPoint r = Extended r Source #

Deprecated: EndPoint is deprecated. Please use Extended instead.

Endpoints of intervals

Construction

whole :: Ord r => IntervalSet r Source #

whole real number line (-∞, ∞)

empty :: Ord r => IntervalSet r Source #

empty interval set

singleton :: Ord r => Interval r -> IntervalSet r Source #

single interval

Query

null :: IntervalSet r -> Bool Source #

Is the interval set empty?

member :: Ord r => r -> IntervalSet r -> Bool Source #

Is the element in the interval set?

notMember :: Ord r => r -> IntervalSet r -> Bool Source #

Is the element not in the interval set?

isSubsetOf :: Ord r => IntervalSet r -> IntervalSet r -> Bool Source #

Is this a subset? (is1 `isSubsetOf` is2) tells whether is1 is a subset of is2.

isProperSubsetOf :: Ord r => IntervalSet r -> IntervalSet r -> Bool Source #

Is this a proper subset? (i.e. a subset but not equal).

span :: Ord r => IntervalSet r -> Interval r Source #

convex hull of a set of intervals.

Construction

complement :: Ord r => IntervalSet r -> IntervalSet r Source #

Complement the interval set.

insert :: Ord r => Interval r -> IntervalSet r -> IntervalSet r Source #

Insert a new interval into the interval set.

delete :: Ord r => Interval r -> IntervalSet r -> IntervalSet r Source #

Delete an interval from the interval set.

Combine

union :: Ord r => IntervalSet r -> IntervalSet r -> IntervalSet r Source #

union of two interval sets

unions :: Ord r => [IntervalSet r] -> IntervalSet r Source #

union of a list of interval sets

intersection :: Ord r => IntervalSet r -> IntervalSet r -> IntervalSet r Source #

intersection of two interval sets

intersections :: Ord r => [IntervalSet r] -> IntervalSet r Source #

intersection of a list of interval sets

difference :: Ord r => IntervalSet r -> IntervalSet r -> IntervalSet r Source #

difference of two interval sets

Conversion

List

fromList :: Ord r => [Interval r] -> IntervalSet r Source #

Build a interval set from a list of intervals.

toList :: Ord r => IntervalSet r -> [Interval r] Source #

Convert a interval set into a list of intervals.

Ordered list

toAscList :: Ord r => IntervalSet r -> [Interval r] Source #

Convert a interval set into a list of intervals in ascending order.

toDescList :: Ord r => IntervalSet r -> [Interval r] Source #

Convert a interval set into a list of intervals in descending order.

fromAscList :: Ord r => [Interval r] -> IntervalSet r Source #

Build a map from an ascending list of intervals. The precondition is not checked.