uni-util-2.2.0.0: Utilities for the uniform workbench

Util.VariableSet

Description

VariableSet allow us to track changes to an unordered mutable set. The elements of the set are keyed by instancing HasKey with some Ord instance; this allows us to set up a special HasKey instance for this module without committing us to that Ord instance everywhere.

Synopsis

Documentation

class Ord key => HasKey x key | x -> key whereSource

Methods

toKey :: x -> keySource

newtype Keyed x Source

Constructors

Keyed x 

Instances

HasKey x key => Eq (Keyed x)

HasKey specifies the ordering to use (without committing us to a particular Ord instance elsewhere).

HasKey x key => Ord (Keyed x) 

data VariableSetUpdate x Source

Encodes the updates to a variable set. BeginGroup does not actually alter the set itself, but indicate that a group of updates is about to begin, terminated by EndGroup. This prevents the client from trying to recalculate the state after every single update.

BeginGroup/EndGroup may be nested (though I don't have any application for that yet).

Instances

Functor VariableSetUpdate 
HasKey x key => HasSource (VariableSet x) [x] (VariableSetUpdate x) 
Ord key => HasSource (VariableMapSet key elt element) [element] (VariableSetUpdate element) 

newtype VariableSet x Source

Constructors

VariableSet (Broadcaster (VariableSetData x) (VariableSetUpdate x)) 

newEmptyVariableSet :: HasKey x key => IO (VariableSet x)Source

Create a new empty variable set.

newVariableSet :: HasKey x key => [x] -> IO (VariableSet x)Source

Create a new variable set with given contents

updateSet :: HasKey x key => VariableSet x -> VariableSetUpdate x -> IO ()Source

Update a variable set in some way.

setVariableSet :: HasKey x key => VariableSet x -> [x] -> IO ()Source

Set the elements of the variable set.

listToSetSource :: Ord x => SimpleSource [x] -> VariableSetSource xSource

Creates a VariableSetSource whose elements are the same as those of the corresponding list.