| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.SimpleOMap.Strict
Synopsis
- data OMap k v where
- null ∷ OMap k v → Bool
- size ∷ OMap k v → Int
- empty ∷ OMap k v
- singleton ∷ k → v → OMap k v
- lookup ∷ Ord k ⇒ k → OMap k v → Maybe v
- member ∷ Ord k ⇒ k → OMap k v → Bool
- (!?) ∷ Ord k ⇒ OMap k v → k → Maybe v
- fromSet ∷ Ord k ⇒ Set (k, v) → OMap k v
- fromFoldable ∷ (Foldable f, Ord k) ⇒ f (k, v) → OMap k v
- fromFoldableDuplicates ∷ (Foldable f, Ord k, Ord v) ⇒ f (k, v) → (Set (k, v), OMap k v)
- toMap ∷ OMap k v → Map k v
- assocList ∷ Ord k ⇒ OMap k v → [(k, v)]
- elems ∷ Ord k ⇒ OMap k v → [v]
- toStrictSeq ∷ Ord k ⇒ OMap k v → StrictSeq v
- toStrictSeqOKeys ∷ OMap k v → StrictSeq k
- toStrictSeqOfPairs ∷ Ord k ⇒ OMap k v → StrictSeq (k, v)
- invariantHolds ∷ OMap k v → Bool
- invariantHolds' ∷ Ord k ⇒ OMap k v → Bool
- (|>) ∷ Ord k ⇒ OMap k v → (k, v) → OMap k v
- (<|) ∷ Ord k ⇒ (k, v) → OMap k v → OMap k v
- (<||) ∷ Ord k ⇒ (k, v) → OMap k v → OMap k v
- (||>) ∷ Ord k ⇒ OMap k v → (k, v) → OMap k v
- (|><) ∷ Ord k ⇒ OMap k v → OMap k v → OMap k v
- (><|) ∷ Ord k ⇒ OMap k v → OMap k v → OMap k v
- elem ∷ (Ord k, Eq v) ⇒ k → v → OMap k v → Bool
- extractKeys ∷ Ord k ⇒ Set k → OMap k v → (OMap k v, Map k v)
- adjust ∷ Ord k ⇒ (v → v) → k → OMap k v → OMap k v
- filter ∷ Ord k ⇒ (v → Bool) → OMap k v → OMap k v
- decodeOMap ∷ Ord k ⇒ Decoder s (k, v) → Decoder s (OMap k v)
Documentation
A general-purpose finite, insert-ordered, map that is strict in its keys and values.
The strictness is enforced by the underlying strict Map, and the ordering
is maintained by the constructing functions, leveraging StrictSeq to hold
the insert-order of the keys.
TODO: DecShareCBOR instance
Bundled Patterns
| pattern Empty ∷ OMap k v | \(O(1)\) |
| pattern (:<|:) ∷ Ord k ⇒ (k, v) → OMap k v → OMap k v infixr 5 | \(O(\log n)\). |
| pattern (:|>:) ∷ Ord k ⇒ OMap k v → (k, v) → OMap k v infixl 5 | \(O(\log n)\). |
Instances
fromFoldable ∷ (Foldable f, Ord k) ⇒ f (k, v) → OMap k v Source #
\(O(n \log n)\). Checks membership before snoc'ing.
De-duplicates the StrictSeq without overwriting.
Starts from the left or head, using foldl'
fromFoldableDuplicates ∷ (Foldable f, Ord k, Ord v) ⇒ f (k, v) → (Set (k, v), OMap k v) Source #
\(O(n \log n)\). Checks membership before snoc'ing.
De-duplicates the StrictSeq and collects and returns the duplicates found.
Starts from the left or head, using foldl'
toStrictSeqOKeys ∷ OMap k v → StrictSeq k Source #
\(O(1)\).
invariantHolds' ∷ Ord k ⇒ OMap k v → Bool Source #
\(O(n \log n)\). Deep, costly invariant using membership check for each value. By the pigeon-hole principle, this check is exhaustive.
(|>) ∷ Ord k ⇒ OMap k v → (k, v) → OMap k v infixl 5 Source #
\(O(\log n)\). Checks membership before snoc'ing.
(<|) ∷ Ord k ⇒ (k, v) → OMap k v → OMap k v infixr 5 Source #
\(O(\log n)\). Checks membership before cons'ing.
(<||) ∷ Ord k ⇒ (k, v) → OMap k v → OMap k v infixr 5 Source #
\(O(\log n)\). Checks membership before cons'ing. Overwrites a duplicate.
(||>) ∷ Ord k ⇒ OMap k v → (k, v) → OMap k v infixl 5 Source #
\(O(\log n)\). Checks membership before snoc'ing. Overwrites a duplicate.
(|><) ∷ Ord k ⇒ OMap k v → OMap k v → OMap k v infixl 5 Source #
\( O(n \log m) \). For every uncons-ed element from the sequence on the right, check its membership in the sequence on the left, before snoc'ing it. Preserve order. Remove duplicates from sequence on the right.
(><|) ∷ Ord k ⇒ OMap k v → OMap k v → OMap k v infixr 5 Source #
\( O(m \log n) \). For every unsnoc-ed element from the sequence on the left, check its membership in the sequence on the right, before cons'ing it. Preserve order. Remove duplicates from sequence on the left.
elem ∷ (Ord k, Eq v) ⇒ k → v → OMap k v → Bool Source #
\(O(\log n)\). Key-value pair membership check.
adjust ∷ Ord k ⇒ (v → v) → k → OMap k v → OMap k v Source #
\(O(\log n)\). Like adjust.
Update a value at a specific key with the result of the provided function.
Returns the original OMap unaltered when the key does not exist.
Examples:
>>>import Data.SimpleOMap.Strict>>>let m = fromFoldable $ zip [1,2] ['a','b'] :: OMap Int Char>>>mStrictSeq {fromStrict = fromList [(1,'a'),(2,'b')]}>>>adjust succ 1 mStrictSeq {fromStrict = fromList [(1,'b'),(2,'b')]}>>>adjust succ 3 mStrictSeq {fromStrict = fromList [(1,'a'),(2,'b')]}