rset-1.0.0: src/Data/Set/Range/Modify.hs
{- |
Module : Data.Set.Range.Modify
Description : Basic functions to modify the contents of a range set.
Copyright : (c) 2017 Daniel Lovasko
License : BSD2
Maintainer : Daniel Lovasko <daniel.lovasko@gmail.com>
Stability : stable
Portability : portable
-}
module Data.Set.Range.Modify
( insertPoint
, insertRange
, removePoint
, removeRange
) where
import Data.Set.Range.Combine
import Data.Set.Range.Types
-- | Insert a single point into the range set.
insertPoint :: (Ord a, Enum a)
=> a -- ^ point
-> RangeSet a -- ^ old range set
-> RangeSet a -- ^ new range set
insertPoint p = union [(p,p)]
-- | Insert a range into the range set.
insertRange :: (Ord a, Enum a)
=> (a,a) -- ^ range
-> RangeSet a -- ^ old range set
-> RangeSet a -- ^ new range set
insertRange r = union [r]
-- | Remove a single point from the range set.
removePoint :: (Ord a, Enum a)
=> a
-> RangeSet a
-> RangeSet a
removePoint p = flip difference [(p,p)]
-- | Remove a range from the range set.
removeRange :: (Ord a, Enum a)
=> (a,a)
-> RangeSet a
-> RangeSet a
removeRange r = flip difference [r]