Copyright | (c) Galois Inc 2022 |
---|---|
Safe Haskell | None |
Language | Haskell2010 |
Data.Parameterized.FinMap.Safe
Contents
Description
Synopsis
- data FinMap (n :: Nat) a
- null :: forall (n :: Nat) a. FinMap n a -> Bool
- lookup :: forall (n :: Natural) a. Fin n -> FinMap n a -> Maybe a
- size :: forall (n :: Nat) a. FinMap n a -> Fin (n + 1)
- incMax :: forall (n :: Nat) a. FinMap n a -> FinMap (n + 1) a
- embed :: forall (n :: Nat) (m :: Nat) a. n <= m => NatRepr m -> FinMap n a -> FinMap m a
- empty :: forall (n :: Nat) a. KnownNat n => FinMap n a
- singleton :: a -> FinMap 1 a
- insert :: forall (n :: Natural) a. Fin n -> a -> FinMap n a -> FinMap n a
- buildFinMap :: forall (m :: Nat) a. NatRepr m -> (forall (n :: Natural). (n + 1) <= m => NatRepr n -> FinMap n a -> FinMap (n + 1) a) -> FinMap m a
- append :: forall (n :: Nat) a. NatRepr n -> a -> FinMap n a -> FinMap (n + 1) a
- fromVector :: forall (n :: Natural) a. Vector n (Maybe a) -> FinMap n a
- delete :: forall (n :: Natural) a. Fin n -> FinMap n a -> FinMap n a
- decMax :: forall (n :: Nat) a. NatRepr n -> FinMap (n + 1) a -> FinMap n a
- mapWithKey :: forall (n :: Natural) a b. (Fin n -> a -> b) -> FinMap n a -> FinMap n b
- unionWithKey :: forall (n :: Natural) a. (Fin n -> a -> a -> a) -> FinMap n a -> FinMap n a -> FinMap n a
- unionWith :: forall a (n :: Nat). (a -> a -> a) -> FinMap n a -> FinMap n a -> FinMap n a
- union :: forall (n :: Nat) a. FinMap n a -> FinMap n a -> FinMap n a
Documentation
data FinMap (n :: Nat) a Source #
Instances
Functor (FinMap n) Source # | |
Foldable (FinMap n) Source # | |
Defined in Data.Parameterized.FinMap.Safe Methods fold :: Monoid m => FinMap n m -> m # foldMap :: Monoid m => (a -> m) -> FinMap n a -> m # foldMap' :: Monoid m => (a -> m) -> FinMap n a -> m # foldr :: (a -> b -> b) -> b -> FinMap n a -> b # foldr' :: (a -> b -> b) -> b -> FinMap n a -> b # foldl :: (b -> a -> b) -> b -> FinMap n a -> b # foldl' :: (b -> a -> b) -> b -> FinMap n a -> b # foldr1 :: (a -> a -> a) -> FinMap n a -> a # foldl1 :: (a -> a -> a) -> FinMap n a -> a # elem :: Eq a => a -> FinMap n a -> Bool # maximum :: Ord a => FinMap n a -> a # minimum :: Ord a => FinMap n a -> a # | |
Traversable (FinMap n) Source # | |
Defined in Data.Parameterized.FinMap.Safe | |
FoldableWithIndex (Fin n) (FinMap n) Source # | |
Defined in Data.Parameterized.FinMap.Safe Methods ifoldMap :: Monoid m => (Fin n -> a -> m) -> FinMap n a -> m # ifoldMap' :: Monoid m => (Fin n -> a -> m) -> FinMap n a -> m # ifoldr :: (Fin n -> a -> b -> b) -> b -> FinMap n a -> b # ifoldl :: (Fin n -> b -> a -> b) -> b -> FinMap n a -> b # | |
FunctorWithIndex (Fin n) (FinMap n) Source # | |
KnownNat n => Monoid (FinMap n a) Source # | |
Semigroup (FinMap n a) Source # | |
Show a => Show (FinMap n a) Source # | Non-lawful instance, provided for testing |
Eq a => Eq (FinMap n a) Source # | |
Query
lookup :: forall (n :: Natural) a. Fin n -> FinMap n a -> Maybe a Source #
O(log n). Fetch the value at the given key in the map.
size :: forall (n :: Nat) a. FinMap n a -> Fin (n + 1) Source #
O(nlog(n)). Number of elements in the map.
This operation is much slower than size
because its implementation must provide significant evidence to the
type-checker, and the easiest way to do that is fairly inefficient.
If speed is a concern, use Data.Parameterized.FinMap.Unsafe.
Construction
incMax :: forall (n :: Nat) a. FinMap n a -> FinMap (n + 1) a Source #
O(n log n). Increase maximum key/size by 1.
This does not alter the key-value pairs in the map, but rather increases the maximum number of key-value pairs that the map can hold. See Data.Parameterized.FinMap for more information.
Requires n + 1 < (maxBound :: Int)
.
embed :: forall (n :: Nat) (m :: Nat) a. n <= m => NatRepr m -> FinMap n a -> FinMap m a Source #
O(n log n). Increase maximum key/size.
Requires m < (maxBound :: Int)
.
buildFinMap :: forall (m :: Nat) a. NatRepr m -> (forall (n :: Natural). (n + 1) <= m => NatRepr n -> FinMap n a -> FinMap (n + 1) a) -> FinMap m a Source #
append :: forall (n :: Nat) a. NatRepr n -> a -> FinMap n a -> FinMap (n + 1) a Source #
O(min(n,W)).
Operations
decMax :: forall (n :: Nat) a. NatRepr n -> FinMap (n + 1) a -> FinMap n a Source #
Decrement the key/size, removing the item at key n + 1
if present.
unionWithKey :: forall (n :: Natural) a. (Fin n -> a -> a -> a) -> FinMap n a -> FinMap n a -> FinMap n a Source #
O(n+m).