| 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 #