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