Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Language.REST.Internal.PartialOrder
Synopsis
- empty :: PartialOrder a
- insert :: (Eq a, Ord a, Hashable a) => PartialOrder a -> a -> a -> Maybe (PartialOrder a)
- replaceUnsafe :: (Eq a, Ord a, Hashable a) => [a] -> a -> PartialOrder a -> PartialOrder a
- insertUnsafe :: Ord a => PartialOrder a -> a -> a -> PartialOrder a
- gt :: (Eq a, Ord a, Hashable a) => PartialOrder a -> a -> a -> Bool
- toList :: PartialOrder a -> [(a, a)]
- isEmpty :: Eq a => PartialOrder a -> Bool
- elems :: (Eq a, Ord a, Hashable a) => PartialOrder a -> Set a
- unionDisjointUnsafe :: Ord a => PartialOrder a -> PartialOrder a -> PartialOrder a
- data PartialOrder a
- toDescsList :: PartialOrder k -> [(k, Set k)]
- descendents :: Ord a => a -> PartialOrder a -> Set a
Documentation
empty :: PartialOrder a Source #
insert :: (Eq a, Ord a, Hashable a) => PartialOrder a -> a -> a -> Maybe (PartialOrder a) Source #
replaceUnsafe :: (Eq a, Ord a, Hashable a) => [a] -> a -> PartialOrder a -> PartialOrder a Source #
replaceUnsafe olds new (>)
replaces every element in olds
with
new
in the partial order (>)
.
More formally:
replaceUnsafe olds new (>) = { (a, b) | notElem a olds, notElem b olds } U { (new, b) | o <- olds, o > b } U { (a, new) | o <- olds, a > o }
This operation is unsafe because it only yields a partial order
if forall o
in olds
:
* o > b
implies not (b > new)
, and
* a > o
implies not (new > a)
.
insertUnsafe :: Ord a => PartialOrder a -> a -> a -> PartialOrder a Source #
insertUnsafe (>) a b
is unsafe because it may not respect some
of its properties if canInsert (>) a b
doesn't hold.
toList :: PartialOrder a -> [(a, a)] Source #
unionDisjointUnsafe :: Ord a => PartialOrder a -> PartialOrder a -> PartialOrder a Source #
data PartialOrder a Source #
Irreflexive (strict) partial orders
Instances
toDescsList :: PartialOrder k -> [(k, Set k)] Source #
descendents :: Ord a => a -> PartialOrder a -> Set a Source #
descendents a (>) = { b | a > b }