incremental-maps-0.0.0.0: src/library/Data/Incremental/Set.hs
module Data.Incremental.Set (
AtomicChange (Delete, Insert)
) where
-- Data
import Data.Set (Set)
import qualified Data.Set as Set
import Data.Monoid (Monoid (mempty, mappend))
import Data.MultiChange (MultiChange)
import qualified Data.MultiChange as MultiChange
import Data.Incremental
-- Benchmarking
import GHC.Generics
-- * Changes
instance (Ord k) => Changeable (Set k) where
type DefaultChange (Set k) = MultiChange (AtomicChange k)
-- * Atomic changes
data AtomicChange k = Delete k | Insert k deriving (Show,Generic)
instance (Ord k) => Change (AtomicChange k) where
type Value (AtomicChange k) = Set k
Delete k $$ seq = Set.delete k seq
Insert k $$ seq = Set.insert k seq