Copyright | (c) Matt Hunzinger 2025 |
---|---|
License | BSD-style (see the LICENSE file in the distribution) |
Maintainer | matt@hunzinger.me |
Stability | provisional |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Data.SparseSet
Description
Synopsis
- data SparseSet i a = SparseSet {
- dense :: Vector a
- sparse :: SparseVector i
- empty :: SparseSet i a
- insert :: Integral i => i -> a -> SparseSet i a -> SparseSet i a
- lookup :: Integral i => SparseSet i a -> i -> Maybe a
- delete :: Integral i => i -> SparseSet i a -> SparseSet i a
- intersection :: Integral i => SparseSet i a -> SparseSet i b -> SparseSet i a
- intersectionWith :: Integral i => (a -> b -> c) -> SparseSet i a -> SparseSet i b -> SparseSet i c
- intersectionVec :: Integral i => SparseSet i a -> SparseSet i b -> Vector a
- toList :: Integral i => SparseSet i a -> [Maybe a]
- freeze :: PrimMonad m => MSparseSet (PrimState m) i a -> m (SparseSet i a)
- unsafeFreeze :: PrimMonad m => MSparseSet (PrimState m) i a -> m (SparseSet i a)
- thaw :: PrimMonad m => SparseSet i a -> m (MSparseSet (PrimState m) i a)
- unsafeThaw :: PrimMonad m => SparseSet i a -> m (MSparseSet (PrimState m) i a)
Sparse sets
Constructors
SparseSet | |
Fields
|
Instances
Construction
Operations
Intersection
intersectionWith :: Integral i => (a -> b -> c) -> SparseSet i a -> SparseSet i b -> SparseSet i c Source #
Conversion
freeze :: PrimMonad m => MSparseSet (PrimState m) i a -> m (SparseSet i a) Source #
Freeze a MSparseSet
into a SparseSet
.
unsafeFreeze :: PrimMonad m => MSparseSet (PrimState m) i a -> m (SparseSet i a) Source #
thaw :: PrimMonad m => SparseSet i a -> m (MSparseSet (PrimState m) i a) Source #
Unfreeze a SparseSet
into a MSparseSet
.
unsafeThaw :: PrimMonad m => SparseSet i a -> m (MSparseSet (PrimState m) i a) Source #