| Copyright | (c) Galois Inc 2014-2019 |
|---|---|
| Maintainer | Joe Hendrix <jhendrix@galois.com> |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Data.Parameterized.Utils.BinTree
Description
Synopsis
- data MaybeS v
- fromMaybeS :: a -> MaybeS a -> a
- data Updated a
- updatedValue :: Updated a -> a
- data TreeApp e t
- class IsBinTree t e | t -> e where
- balanceL :: IsBinTree c e => e -> c -> c -> c
- balanceR :: IsBinTree c e => e -> c -> c -> c
- glue :: IsBinTree c e => c -> c -> c
- merge :: IsBinTree c e => c -> c -> c
- filterGt :: IsBinTree c e => (e -> Ordering) -> c -> MaybeS c
- filterLt :: IsBinTree c e => (e -> Ordering) -> c -> MaybeS c
- insert :: IsBinTree c e => (e -> e -> Ordering) -> e -> c -> Updated c
- delete :: IsBinTree c e => (e -> Ordering) -> c -> MaybeS c
- union :: IsBinTree c e => (e -> e -> Ordering) -> c -> c -> c
- link :: IsBinTree c e => e -> c -> c -> c
- data PairS f s = PairS !f !s
Documentation
A strict version of Maybe
fromMaybeS :: a -> MaybeS a -> a Source #
Updated a contains a value that has been flagged on whether it was
modified by an operation.
updatedValue :: Updated a -> a Source #
balanceL :: IsBinTree c e => e -> c -> c -> c Source #
balanceL p l r returns a balanced tree for the sequence l ++ [p] ++ r.
It assumes that l and r are close to being balanced, and that only
l may contain too many elements.
balanceR :: IsBinTree c e => e -> c -> c -> c Source #
balanceR p l r returns a balanced tree for the sequence l ++ [p] ++ r.
It assumes that l and r are close to being balanced, and that only
r may contain too many elements.
glue :: IsBinTree c e => c -> c -> c Source #
glue l r concatenates l and r.
It assumes that l and r are already balanced with respect to each other.
merge :: IsBinTree c e => c -> c -> c Source #
Concatenate two trees that are ordered with respect to each other.
filterGt :: IsBinTree c e => (e -> Ordering) -> c -> MaybeS c Source #
Returns only entries that are less than predicate with respect to the ordering and Nothing if no elements are discarded.
filterLt :: IsBinTree c e => (e -> Ordering) -> c -> MaybeS c Source #
filterLt k m returns submap of m that only contains entries
that are smaller than k. If no entries are deleted then return Nothing.
insert :: IsBinTree c e => (e -> e -> Ordering) -> e -> c -> Updated c Source #
insert p m inserts the binding into m. It returns
an Unchanged value if the map stays the same size and an updated
value if a new entry was inserted.