sparse-set-0.3.0: Sparse set data structure
Copyright(c) Matt Hunzinger 2025
LicenseBSD-style (see the LICENSE file in the distribution)
Maintainermatt@hunzinger.me
Stabilityprovisional
Portabilitynon-portable (GHC extensions)
Safe HaskellNone
LanguageHaskell2010

Data.SparseSet.Unboxed

Description

 
Synopsis

Sparse sets

data SparseSet i a Source #

Constructors

SparseSet 

Fields

Instances

Instances details
Generic (SparseSet i a) Source # 
Instance details

Defined in Data.SparseSet.Unboxed

Associated Types

type Rep (SparseSet i a) 
Instance details

Defined in Data.SparseSet.Unboxed

type Rep (SparseSet i a) = D1 ('MetaData "SparseSet" "Data.SparseSet.Unboxed" "sparse-set-0.3.0-9e4aezLoPlHECzYnIPXBuf" 'False) (C1 ('MetaCons "SparseSet" 'PrefixI 'True) (S1 ('MetaSel ('Just "dense") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector a)) :*: S1 ('MetaSel ('Just "sparse") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (SparseVector i))))

Methods

from :: SparseSet i a -> Rep (SparseSet i a) x #

to :: Rep (SparseSet i a) x -> SparseSet i a #

(Show a, Show i, Unbox a, Unbox i) => Show (SparseSet i a) Source # 
Instance details

Defined in Data.SparseSet.Unboxed

Methods

showsPrec :: Int -> SparseSet i a -> ShowS #

show :: SparseSet i a -> String #

showList :: [SparseSet i a] -> ShowS #

Unbox i => NFData (SparseSet i a) Source # 
Instance details

Defined in Data.SparseSet.Unboxed

Methods

rnf :: SparseSet i a -> () #

(Eq a, Eq i, Unbox a, Unbox i) => Eq (SparseSet i a) Source # 
Instance details

Defined in Data.SparseSet.Unboxed

Methods

(==) :: SparseSet i a -> SparseSet i a -> Bool #

(/=) :: SparseSet i a -> SparseSet i a -> Bool #

type Rep (SparseSet i a) Source # 
Instance details

Defined in Data.SparseSet.Unboxed

type Rep (SparseSet i a) = D1 ('MetaData "SparseSet" "Data.SparseSet.Unboxed" "sparse-set-0.3.0-9e4aezLoPlHECzYnIPXBuf" 'False) (C1 ('MetaCons "SparseSet" 'PrefixI 'True) (S1 ('MetaSel ('Just "dense") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector a)) :*: S1 ('MetaSel ('Just "sparse") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (SparseVector i))))

Construction

empty :: (Unbox a, Unbox i) => SparseSet i a Source #

Operations

insert :: (Integral i, Unbox a, Unbox i) => i -> a -> SparseSet i a -> SparseSet i a Source #

lookup :: (Integral i, Unbox a, Unbox i) => SparseSet i a -> i -> Maybe a Source #

delete :: (Integral i, Unbox a, Unbox i) => i -> SparseSet i a -> SparseSet i a Source #

Intersection

intersection :: (Integral i, Unbox a, Unbox i) => SparseSet i a -> SparseSet i b -> SparseSet i a Source #

intersectionWith :: (Integral i, Unbox a, Unbox b, Unbox c, Unbox i) => (a -> b -> c) -> SparseSet i a -> SparseSet i b -> SparseSet i c Source #

intersectionVec :: (Integral i, Unbox a, Unbox i) => SparseSet i a -> SparseSet i b -> Vector a Source #

Conversion

toList :: (Integral i, Unbox a, Unbox i) => SparseSet i a -> [Maybe a] Source #

freeze :: (PrimMonad m, Unbox a, Unbox i) => MSparseSet (PrimState m) i a -> m (SparseSet i a) Source #

Freeze a MSparseSet into a SparseSet.

unsafeFreeze :: (PrimMonad m, Unbox a, Unbox i) => MSparseSet (PrimState m) i a -> m (SparseSet i a) Source #

thaw :: (PrimMonad m, Unbox a, Unbox i) => SparseSet i a -> m (MSparseSet (PrimState m) i a) Source #

Unfreeze a SparseSet into a MSparseSet.

unsafeThaw :: (PrimMonad m, Unbox a, Unbox i) => SparseSet i a -> m (MSparseSet (PrimState m) i a) Source #