packages feed

IntervalMap 0.6.0.0 → 0.6.1.0

raw patch · 7 files changed

+47/−2 lines, 7 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.IntervalSet: instance (Data.IntervalMap.Generic.Interval.Interval i k, GHC.Classes.Ord i) => Data.Semigroup.Semigroup (Data.IntervalSet.IntervalSet i)
+ Data.IntervalMap.Generic.Lazy: lookupLast :: Interval k e => IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Lazy: lookupMax :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Lazy: lookupMin :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Strict: lookupLast :: Interval k e => IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Strict: lookupMax :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Strict: lookupMin :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Lazy: lookupLast :: Interval k e => IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Lazy: lookupMax :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Lazy: lookupMin :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Strict: lookupLast :: Interval k e => IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Strict: lookupMax :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Strict: lookupMin :: IntervalMap k v -> Maybe (k, v)
+ Data.IntervalSet: instance (Data.IntervalMap.Generic.Interval.Interval i k, GHC.Classes.Ord i) => GHC.Base.Semigroup (Data.IntervalSet.IntervalSet i)
- Data.IntervalMap.Generic.Interval: genericCompare :: (Interval i e) => i -> i -> Ordering
+ Data.IntervalMap.Generic.Interval: genericCompare :: Interval i e => i -> i -> Ordering
- Data.IntervalMap.Generic.Interval: genericEquals :: (Interval i e) => i -> i -> Bool
+ Data.IntervalMap.Generic.Interval: genericEquals :: Interval i e => i -> i -> Bool
- Data.IntervalMap.Generic.Lazy: containing :: (Interval k e) => IntervalMap k v -> e -> IntervalMap k v
+ Data.IntervalMap.Generic.Lazy: containing :: Interval k e => IntervalMap k v -> e -> IntervalMap k v
- Data.IntervalMap.Generic.Lazy: filter :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Generic.Lazy: filter :: Interval k e => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Generic.Lazy: filterWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Generic.Lazy: filterWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Generic.Lazy: findLast :: (Interval k e) => IntervalMap k v -> (k, v)
+ Data.IntervalMap.Generic.Lazy: findLast :: Interval k e => IntervalMap k v -> (k, v)
- Data.IntervalMap.Generic.Lazy: flattenWithMonotonic :: (Interval k e) => ((k, v) -> (k, v) -> Maybe (k, v)) -> IntervalMap k v -> IntervalMap k v
+ Data.IntervalMap.Generic.Lazy: flattenWithMonotonic :: Interval k e => ((k, v) -> (k, v) -> Maybe (k, v)) -> IntervalMap k v -> IntervalMap k v
- Data.IntervalMap.Generic.Lazy: fromDistinctAscList :: (Interval k e) => [(k, v)] -> IntervalMap k v
+ Data.IntervalMap.Generic.Lazy: fromDistinctAscList :: Interval k e => [(k, v)] -> IntervalMap k v
- Data.IntervalMap.Generic.Lazy: intersecting :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Generic.Lazy: intersecting :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalMap.Generic.Lazy: lookup :: (Ord k) => k -> IntervalMap k v -> Maybe v
+ Data.IntervalMap.Generic.Lazy: lookup :: Ord k => k -> IntervalMap k v -> Maybe v
- Data.IntervalMap.Generic.Lazy: lookupGE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Lazy: lookupGE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Lazy: lookupGT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Lazy: lookupGT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Lazy: lookupLE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Lazy: lookupLE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Lazy: lookupLT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Lazy: lookupLT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Lazy: mapEither :: (Interval k e) => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
+ Data.IntervalMap.Generic.Lazy: mapEither :: Interval k e => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
- Data.IntervalMap.Generic.Lazy: mapEitherWithKey :: (Interval i k) => (i -> a -> Either b c) -> IntervalMap i a -> (IntervalMap i b, IntervalMap i c)
+ Data.IntervalMap.Generic.Lazy: mapEitherWithKey :: Interval i k => (i -> a -> Either b c) -> IntervalMap i a -> (IntervalMap i b, IntervalMap i c)
- Data.IntervalMap.Generic.Lazy: mapMaybe :: (Interval k e) => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Generic.Lazy: mapMaybe :: Interval k e => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Generic.Lazy: mapMaybeWithKey :: (Interval k e) => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Generic.Lazy: mapMaybeWithKey :: Interval k e => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Generic.Lazy: member :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Generic.Lazy: member :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Generic.Lazy: notMember :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Generic.Lazy: notMember :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Generic.Lazy: partition :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Generic.Lazy: partition :: Interval k e => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Generic.Lazy: partitionWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Generic.Lazy: partitionWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Generic.Lazy: splitAt :: (Interval i k) => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
+ Data.IntervalMap.Generic.Lazy: splitAt :: Interval i k => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
- Data.IntervalMap.Generic.Lazy: within :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Generic.Lazy: within :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalMap.Generic.Strict: containing :: (Interval k e) => IntervalMap k v -> e -> IntervalMap k v
+ Data.IntervalMap.Generic.Strict: containing :: Interval k e => IntervalMap k v -> e -> IntervalMap k v
- Data.IntervalMap.Generic.Strict: filter :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Generic.Strict: filter :: Interval k e => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Generic.Strict: filterWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Generic.Strict: filterWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Generic.Strict: findLast :: (Interval k e) => IntervalMap k v -> (k, v)
+ Data.IntervalMap.Generic.Strict: findLast :: Interval k e => IntervalMap k v -> (k, v)
- Data.IntervalMap.Generic.Strict: flattenWithMonotonic :: (Interval k e) => ((k, v) -> (k, v) -> Maybe (k, v)) -> IntervalMap k v -> IntervalMap k v
+ Data.IntervalMap.Generic.Strict: flattenWithMonotonic :: Interval k e => ((k, v) -> (k, v) -> Maybe (k, v)) -> IntervalMap k v -> IntervalMap k v
- Data.IntervalMap.Generic.Strict: fromDistinctAscList :: (Interval k e) => [(k, v)] -> IntervalMap k v
+ Data.IntervalMap.Generic.Strict: fromDistinctAscList :: Interval k e => [(k, v)] -> IntervalMap k v
- Data.IntervalMap.Generic.Strict: intersecting :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Generic.Strict: intersecting :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalMap.Generic.Strict: lookup :: (Ord k) => k -> IntervalMap k v -> Maybe v
+ Data.IntervalMap.Generic.Strict: lookup :: Ord k => k -> IntervalMap k v -> Maybe v
- Data.IntervalMap.Generic.Strict: lookupGE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Strict: lookupGE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Strict: lookupGT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Strict: lookupGT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Strict: lookupLE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Strict: lookupLE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Strict: lookupLT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Generic.Strict: lookupLT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Generic.Strict: mapEither :: (Interval k e) => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
+ Data.IntervalMap.Generic.Strict: mapEither :: Interval k e => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
- Data.IntervalMap.Generic.Strict: mapEitherWithKey :: (Interval k e) => (k -> a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
+ Data.IntervalMap.Generic.Strict: mapEitherWithKey :: Interval k e => (k -> a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
- Data.IntervalMap.Generic.Strict: mapMaybe :: (Interval k e) => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Generic.Strict: mapMaybe :: Interval k e => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Generic.Strict: mapMaybeWithKey :: (Interval k e) => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Generic.Strict: mapMaybeWithKey :: Interval k e => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Generic.Strict: member :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Generic.Strict: member :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Generic.Strict: notMember :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Generic.Strict: notMember :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Generic.Strict: partition :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Generic.Strict: partition :: Interval k e => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Generic.Strict: partitionWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Generic.Strict: partitionWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Generic.Strict: splitAt :: (Interval i k) => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
+ Data.IntervalMap.Generic.Strict: splitAt :: Interval i k => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
- Data.IntervalMap.Generic.Strict: within :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Generic.Strict: within :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalMap.Interval: above :: (Ord a) => a -> Interval a -> Bool
+ Data.IntervalMap.Interval: above :: Ord a => a -> Interval a -> Bool
- Data.IntervalMap.Interval: below :: (Ord a) => a -> Interval a -> Bool
+ Data.IntervalMap.Interval: below :: Ord a => a -> Interval a -> Bool
- Data.IntervalMap.Interval: combine :: (Ord a) => Interval a -> Interval a -> Maybe (Interval a)
+ Data.IntervalMap.Interval: combine :: Ord a => Interval a -> Interval a -> Maybe (Interval a)
- Data.IntervalMap.Interval: inside :: (Ord a) => a -> Interval a -> Bool
+ Data.IntervalMap.Interval: inside :: Ord a => a -> Interval a -> Bool
- Data.IntervalMap.Interval: isEmpty :: (Ord a) => Interval a -> Bool
+ Data.IntervalMap.Interval: isEmpty :: Ord a => Interval a -> Bool
- Data.IntervalMap.Interval: overlaps :: (Ord a) => Interval a -> Interval a -> Bool
+ Data.IntervalMap.Interval: overlaps :: Ord a => Interval a -> Interval a -> Bool
- Data.IntervalMap.Interval: subsumes :: (Ord a) => Interval a -> Interval a -> Bool
+ Data.IntervalMap.Interval: subsumes :: Ord a => Interval a -> Interval a -> Bool
- Data.IntervalMap.Lazy: containing :: (Interval k e) => IntervalMap k v -> e -> IntervalMap k v
+ Data.IntervalMap.Lazy: containing :: Interval k e => IntervalMap k v -> e -> IntervalMap k v
- Data.IntervalMap.Lazy: filter :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Lazy: filter :: Interval k e => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Lazy: filterWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Lazy: filterWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Lazy: findLast :: (Interval k e) => IntervalMap k v -> (k, v)
+ Data.IntervalMap.Lazy: findLast :: Interval k e => IntervalMap k v -> (k, v)
- Data.IntervalMap.Lazy: flattenWith :: (Ord k) => (v -> v -> v) -> IntervalMap k v -> IntervalMap k v
+ Data.IntervalMap.Lazy: flattenWith :: Ord k => (v -> v -> v) -> IntervalMap k v -> IntervalMap k v
- Data.IntervalMap.Lazy: fromDistinctAscList :: (Interval k e) => [(k, v)] -> IntervalMap k v
+ Data.IntervalMap.Lazy: fromDistinctAscList :: Interval k e => [(k, v)] -> IntervalMap k v
- Data.IntervalMap.Lazy: intersecting :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Lazy: intersecting :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalMap.Lazy: lookup :: (Ord k) => k -> IntervalMap k v -> Maybe v
+ Data.IntervalMap.Lazy: lookup :: Ord k => k -> IntervalMap k v -> Maybe v
- Data.IntervalMap.Lazy: lookupGE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Lazy: lookupGE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Lazy: lookupGT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Lazy: lookupGT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Lazy: lookupLE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Lazy: lookupLE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Lazy: lookupLT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Lazy: lookupLT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Lazy: mapEither :: (Interval k e) => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
+ Data.IntervalMap.Lazy: mapEither :: Interval k e => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
- Data.IntervalMap.Lazy: mapEitherWithKey :: (Interval i k) => (i -> a -> Either b c) -> IntervalMap i a -> (IntervalMap i b, IntervalMap i c)
+ Data.IntervalMap.Lazy: mapEitherWithKey :: Interval i k => (i -> a -> Either b c) -> IntervalMap i a -> (IntervalMap i b, IntervalMap i c)
- Data.IntervalMap.Lazy: mapMaybe :: (Interval k e) => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Lazy: mapMaybe :: Interval k e => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Lazy: mapMaybeWithKey :: (Interval k e) => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Lazy: mapMaybeWithKey :: Interval k e => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Lazy: member :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Lazy: member :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Lazy: notMember :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Lazy: notMember :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Lazy: partition :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Lazy: partition :: Interval k e => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Lazy: partitionWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Lazy: partitionWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Lazy: splitAt :: (Interval i k) => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
+ Data.IntervalMap.Lazy: splitAt :: Interval i k => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
- Data.IntervalMap.Lazy: within :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Lazy: within :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalMap.Strict: containing :: (Interval k e) => IntervalMap k v -> e -> IntervalMap k v
+ Data.IntervalMap.Strict: containing :: Interval k e => IntervalMap k v -> e -> IntervalMap k v
- Data.IntervalMap.Strict: filter :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Strict: filter :: Interval k e => (a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Strict: filterWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
+ Data.IntervalMap.Strict: filterWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> IntervalMap k a
- Data.IntervalMap.Strict: findLast :: (Interval k e) => IntervalMap k v -> (k, v)
+ Data.IntervalMap.Strict: findLast :: Interval k e => IntervalMap k v -> (k, v)
- Data.IntervalMap.Strict: flattenWith :: (Ord k) => (v -> v -> v) -> IntervalMap k v -> IntervalMap k v
+ Data.IntervalMap.Strict: flattenWith :: Ord k => (v -> v -> v) -> IntervalMap k v -> IntervalMap k v
- Data.IntervalMap.Strict: fromDistinctAscList :: (Interval k e) => [(k, v)] -> IntervalMap k v
+ Data.IntervalMap.Strict: fromDistinctAscList :: Interval k e => [(k, v)] -> IntervalMap k v
- Data.IntervalMap.Strict: intersecting :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Strict: intersecting :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalMap.Strict: lookup :: (Ord k) => k -> IntervalMap k v -> Maybe v
+ Data.IntervalMap.Strict: lookup :: Ord k => k -> IntervalMap k v -> Maybe v
- Data.IntervalMap.Strict: lookupGE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Strict: lookupGE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Strict: lookupGT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Strict: lookupGT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Strict: lookupLE :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Strict: lookupLE :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Strict: lookupLT :: (Ord k) => k -> IntervalMap k v -> Maybe (k, v)
+ Data.IntervalMap.Strict: lookupLT :: Ord k => k -> IntervalMap k v -> Maybe (k, v)
- Data.IntervalMap.Strict: mapEither :: (Interval k e) => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
+ Data.IntervalMap.Strict: mapEither :: Interval k e => (a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
- Data.IntervalMap.Strict: mapEitherWithKey :: (Interval k e) => (k -> a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
+ Data.IntervalMap.Strict: mapEitherWithKey :: Interval k e => (k -> a -> Either b c) -> IntervalMap k a -> (IntervalMap k b, IntervalMap k c)
- Data.IntervalMap.Strict: mapMaybe :: (Interval k e) => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Strict: mapMaybe :: Interval k e => (a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Strict: mapMaybeWithKey :: (Interval k e) => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
+ Data.IntervalMap.Strict: mapMaybeWithKey :: Interval k e => (k -> a -> Maybe b) -> IntervalMap k a -> IntervalMap k b
- Data.IntervalMap.Strict: member :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Strict: member :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Strict: notMember :: (Ord k) => k -> IntervalMap k v -> Bool
+ Data.IntervalMap.Strict: notMember :: Ord k => k -> IntervalMap k v -> Bool
- Data.IntervalMap.Strict: partition :: (Interval k e) => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Strict: partition :: Interval k e => (a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Strict: partitionWithKey :: (Interval k e) => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
+ Data.IntervalMap.Strict: partitionWithKey :: Interval k e => (k -> a -> Bool) -> IntervalMap k a -> (IntervalMap k a, IntervalMap k a)
- Data.IntervalMap.Strict: splitAt :: (Interval i k) => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
+ Data.IntervalMap.Strict: splitAt :: Interval i k => IntervalMap i a -> k -> (IntervalMap i a, IntervalMap i a, IntervalMap i a)
- Data.IntervalMap.Strict: within :: (Interval k e) => IntervalMap k v -> k -> IntervalMap k v
+ Data.IntervalMap.Strict: within :: Interval k e => IntervalMap k v -> k -> IntervalMap k v
- Data.IntervalSet: Node :: !Color -> !k -> !k -> !(IntervalSet k) -> !(IntervalSet k) -> IntervalSet k
+ Data.IntervalSet: Node :: !Color -> !k -> !k -> !IntervalSet k -> !IntervalSet k -> IntervalSet k
- Data.IntervalSet: containing :: (Interval k e) => IntervalSet k -> e -> IntervalSet k
+ Data.IntervalSet: containing :: Interval k e => IntervalSet k -> e -> IntervalSet k
- Data.IntervalSet: filter :: (Interval k e) => (k -> Bool) -> IntervalSet k -> IntervalSet k
+ Data.IntervalSet: filter :: Interval k e => (k -> Bool) -> IntervalSet k -> IntervalSet k
- Data.IntervalSet: findLast :: (Interval k e) => IntervalSet k -> Maybe k
+ Data.IntervalSet: findLast :: Interval k e => IntervalSet k -> Maybe k
- Data.IntervalSet: flattenWithMonotonic :: (Interval a e) => (a -> a -> Maybe a) -> IntervalSet a -> IntervalSet a
+ Data.IntervalSet: flattenWithMonotonic :: Interval a e => (a -> a -> Maybe a) -> IntervalSet a -> IntervalSet a
- Data.IntervalSet: fromDistinctAscList :: (Interval k e) => [k] -> IntervalSet k
+ Data.IntervalSet: fromDistinctAscList :: Interval k e => [k] -> IntervalSet k
- Data.IntervalSet: intersecting :: (Interval k e) => IntervalSet k -> k -> IntervalSet k
+ Data.IntervalSet: intersecting :: Interval k e => IntervalSet k -> k -> IntervalSet k
- Data.IntervalSet: isProperSubsetOf :: (Ord k) => IntervalSet k -> IntervalSet k -> Bool
+ Data.IntervalSet: isProperSubsetOf :: Ord k => IntervalSet k -> IntervalSet k -> Bool
- Data.IntervalSet: isSubsetOf :: (Ord k) => IntervalSet k -> IntervalSet k -> Bool
+ Data.IntervalSet: isSubsetOf :: Ord k => IntervalSet k -> IntervalSet k -> Bool
- Data.IntervalSet: lookupGE :: (Ord k) => k -> IntervalSet k -> Maybe k
+ Data.IntervalSet: lookupGE :: Ord k => k -> IntervalSet k -> Maybe k
- Data.IntervalSet: lookupGT :: (Ord k) => k -> IntervalSet k -> Maybe k
+ Data.IntervalSet: lookupGT :: Ord k => k -> IntervalSet k -> Maybe k
- Data.IntervalSet: lookupLE :: (Ord k) => k -> IntervalSet k -> Maybe k
+ Data.IntervalSet: lookupLE :: Ord k => k -> IntervalSet k -> Maybe k
- Data.IntervalSet: lookupLT :: (Ord k) => k -> IntervalSet k -> Maybe k
+ Data.IntervalSet: lookupLT :: Ord k => k -> IntervalSet k -> Maybe k
- Data.IntervalSet: member :: (Ord k) => k -> IntervalSet k -> Bool
+ Data.IntervalSet: member :: Ord k => k -> IntervalSet k -> Bool
- Data.IntervalSet: notMember :: (Ord k) => k -> IntervalSet k -> Bool
+ Data.IntervalSet: notMember :: Ord k => k -> IntervalSet k -> Bool
- Data.IntervalSet: partition :: (Interval k e) => (k -> Bool) -> IntervalSet k -> (IntervalSet k, IntervalSet k)
+ Data.IntervalSet: partition :: Interval k e => (k -> Bool) -> IntervalSet k -> (IntervalSet k, IntervalSet k)
- Data.IntervalSet: splitAt :: (Interval i k) => IntervalSet i -> k -> (IntervalSet i, IntervalSet i, IntervalSet i)
+ Data.IntervalSet: splitAt :: Interval i k => IntervalSet i -> k -> (IntervalSet i, IntervalSet i, IntervalSet i)
- Data.IntervalSet: within :: (Interval k e) => IntervalSet k -> k -> IntervalSet k
+ Data.IntervalSet: within :: Interval k e => IntervalSet k -> k -> IntervalSet k

Files

Data/IntervalMap/Generic/Base.hs view
@@ -171,7 +171,10 @@             -- * Min\/Max             , findMin             , findMax+            , lookupMin+            , lookupMax             , findLast+            , lookupLast             , deleteMin             , deleteMax             , deleteFindMin@@ -570,6 +573,18 @@ findMax (Node _ _ _ _ _ r) = findMax r findMax Nil = error "IntervalMap.findMin: empty map" +-- | /O(log n)/. Returns the smallest key and its associated value.+lookupMin :: IntervalMap k v -> Maybe (k, v)+lookupMin (Node _ k _ v Nil _) = Just (k,v)+lookupMin (Node _ _ _ _ l _) = lookupMin l+lookupMin Nil = Nothing++-- | /O(log n)/. Returns the largest key and its associated value.+lookupMax :: IntervalMap k v -> Maybe (k, v)+lookupMax (Node _ k _ v _ Nil) = Just (k,v)+lookupMax (Node _ _ _ _ _ r) = lookupMax r+lookupMax Nil = Nothing+ -- | Returns the key with the largest endpoint and its associated value. -- If there is more than one key with that endpoint, return the rightmost. --@@ -584,6 +599,22 @@                                                       else go r <|> go l                           | otherwise  = Nothing     sameU a b = compareUpperBounds a b == EQ++-- | Returns the key with the largest endpoint and its associated value.+-- If there is more than one key with that endpoint, return the rightmost.+--+-- /O(n)/, since all keys could have the same endpoint.+-- /O(log n)/ average case.+lookupLast :: (Interval k e) => IntervalMap k v -> Maybe (k, v)+lookupLast Nil = Nothing+lookupLast t@(Node _ _ mx _ _ _) = go t+  where+    go Nil = Nothing+    go (Node _ k m v l r) | sameU m mx = if sameU k m then go r <|> Just (k,v)+                                                      else go r <|> go l+                          | otherwise  = Nothing+    sameU a b = compareUpperBounds a b == EQ+   -- Type to indicate whether the number of black nodes changed or stayed the same.
Data/IntervalMap/Generic/Lazy.hs view
@@ -138,6 +138,9 @@             , findMin             , findMax             , findLast+            , lookupMin+            , lookupMax+            , lookupLast             , deleteMin             , deleteMax             , deleteFindMin
Data/IntervalMap/Generic/Strict.hs view
@@ -173,6 +173,9 @@             , findMin             , findMax             , findLast+            , lookupMin+            , lookupMax+            , lookupLast             , deleteMin             , deleteMax             , deleteFindMin
Data/IntervalMap/Lazy.hs view
@@ -140,6 +140,9 @@             , findMin             , findMax             , findLast+            , lookupMin+            , lookupMax+            , lookupLast             , deleteMin             , deleteMax             , deleteFindMin
Data/IntervalMap/Strict.hs view
@@ -184,6 +184,9 @@             , findMin             , findMax             , findLast+            , lookupMin+            , lookupMax+            , lookupLast             , deleteMin             , deleteMax             , deleteFindMin
IntervalMap.cabal view
@@ -1,5 +1,5 @@ Name:                IntervalMap-Version:             0.6.0.0+Version:             0.6.1.0 Stability:           experimental Synopsis:            Containers for intervals, with efficient search. Homepage:            http://www.chr-breitkopf.de/comp/IntervalMap
changelog view
@@ -1,4 +1,6 @@-0.6.0.0  Support ghc 8.4, desupport ghc 7.x+0.6.1.0  Add safe versions of find... functions.++0.6.0.0  Support ghc 8.4, desupport ghc 7.x.  0.5.3.1  Remove HPC flag. 0.5.3.0  Add lookupLT... functions.