| Safe Haskell | Safe |
|---|---|
| Language | Haskell98 |
Data.Dependent.Map.Internal
Synopsis
- data DMap (k1 :: k -> Type) (f :: k -> Type) where
- empty :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f
- singleton :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f
- null :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Bool
- size :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Int
- lookup :: forall {k1} k2 f (v :: k1). GCompare k2 => k2 v -> DMap k2 f -> Maybe (f v)
- lookupAssoc :: forall {k1} {k2} (k3 :: k1 -> Type) (f :: k1 -> Type) (v :: k2). GCompare k3 => Some k3 -> DMap k3 f -> Maybe (DSum k3 f)
- combine :: forall {k1} k2 (v :: k1) f. GCompare k2 => k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- insertMax :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f
- insertMin :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f
- merge :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> DMap k2 f -> DMap k2 f
- glue :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> DMap k2 f -> DMap k2 f
- deleteFindMin :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> (DSum k2 f, DMap k2 f)
- data a :*: b = !a :*: !b
- toPair :: (a :*: b) -> (a, b)
- data Triple' a b c = Triple' !a !b !c
- toTriple :: Triple' a b c -> (a, b, c)
- minViewWithKey :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Maybe (DSum k2 f, DMap k2 f)
- maxViewWithKey :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Maybe (DSum k2 f, DMap k2 f)
- deleteFindMax :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> (DSum k2 f, DMap k2 f)
- delta :: Int
- ratio :: Int
- balance :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- rotateL :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- rotateR :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- singleL :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- singleR :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- doubleL :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- doubleR :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- bin :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f
- trim :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). (Some k2 -> Ordering) -> (Some k2 -> Ordering) -> DMap k2 f -> DMap k2 f
- trimLookupLo :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). GCompare k2 => Some k2 -> (Some k2 -> Ordering) -> DMap k2 f -> (Maybe (DSum k2 f), DMap k2 f)
- filterGt :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). GCompare k2 => (Some k2 -> Ordering) -> DMap k2 f -> DMap k2 f
- filterLt :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). GCompare k2 => (Some k2 -> Ordering) -> DMap k2 f -> DMap k2 f
Documentation
data DMap (k1 :: k -> Type) (f :: k -> Type) where #
Dependent maps: k is a GADT-like thing with a facility for
rediscovering its type parameter, elements of which function as identifiers
tagged with the type of the thing they identify. Real GADTs are one
useful instantiation of k, as are Tags from Data.Unique.Tag in the
'prim-uniq' package.
Semantically, is equivalent to a set of DMap k f where no two
elements have the same tag.DSum k f
More informally, DMap is to dependent products as Map is to (->).
Thus it could also be thought of as a partial (in the sense of "partial
function") dependent product.
Constructors
| Tip :: forall {k} (k1 :: k -> Type) (f :: k -> Type). DMap k1 f | |
| Bin :: forall {k} (k1 :: k -> Type) (v :: k) (f :: k -> Type). !Int -> !(k1 v) -> f v -> !(DMap k1 f) -> !(DMap k1 f) -> DMap k1 f |
Instances
| GCompare k2 => Monoid (DMap k2 f) # | |
| GCompare k2 => Semigroup (DMap k2 f) # | |
| (GCompare k2, GRead k2, Has' Read k2 f) => Read (DMap k2 f) # | |
| (GShow k2, Has' Show k2 f) => Show (DMap k2 f) # | |
| (GEq k2, Has' Eq k2 f) => Eq (DMap k2 f) # | |
| (GCompare k2, Has' Eq k2 f, Has' Ord k2 f) => Ord (DMap k2 f) # | |
empty :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f #
O(1). The empty map.
empty == fromList [] size empty == 0
singleton :: forall {k1} k2 (v :: k1) f. k2 v -> f v -> DMap k2 f #
O(1). A map with a single element.
singleton 1 'a' == fromList [(1, 'a')] size (singleton 1 'a') == 1
null :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Bool #
O(1). Is the map empty?
size :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Int #
O(1). The number of elements in the map.
lookupAssoc :: forall {k1} {k2} (k3 :: k1 -> Type) (f :: k1 -> Type) (v :: k2). GCompare k3 => Some k3 -> DMap k3 f -> Maybe (DSum k3 f) #
combine :: forall {k1} k2 (v :: k1) f. GCompare k2 => k2 v -> f v -> DMap k2 f -> DMap k2 f -> DMap k2 f #
deleteFindMin :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> (DSum k2 f, DMap k2 f) #
O(log n). Delete and find the minimal element.
deleteFindMin (fromList [(5,"a"), (3,"b"), (10,"c")]) == ((3,"b"), fromList[(5,"a"), (10,"c")]) deleteFindMin Error: can not return the minimal element of an empty map
minViewWithKey :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Maybe (DSum k2 f, DMap k2 f) #
O(log n). Retrieves the minimal (key :=> value) entry of the map, and
the map stripped of that element, or Nothing if passed an empty map.
maxViewWithKey :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> Maybe (DSum k2 f, DMap k2 f) #
O(log n). Retrieves the maximal (key :=> value) entry of the map, and
the map stripped of that element, or Nothing if passed an empty map.
deleteFindMax :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). DMap k2 f -> (DSum k2 f, DMap k2 f) #
O(log n). Delete and find the maximal element.
deleteFindMax (fromList [(5,"a"), (3,"b"), (10,"c")]) == ((10,"c"), fromList [(3,"b"), (5,"a")]) deleteFindMax empty Error: can not return the maximal element of an empty map
trim :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). (Some k2 -> Ordering) -> (Some k2 -> Ordering) -> DMap k2 f -> DMap k2 f #
trimLookupLo :: forall {k1} (k2 :: k1 -> Type) (f :: k1 -> Type). GCompare k2 => Some k2 -> (Some k2 -> Ordering) -> DMap k2 f -> (Maybe (DSum k2 f), DMap k2 f) #