aivika-5.2: A multi-method simulation library

CopyrightCopyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com>
LicenseBSD3
MaintainerDavid Sorokin <david.sorokin@gmail.com>
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Simulation.Aivika.Ref

Description

Tested with: GHC 8.0.1

This module defines an updatable reference that depends on the event queue.

Synopsis

Documentation

data Ref a Source #

The Ref type represents a mutable variable similar to the IORef variable but only dependent on the event queue, which allows synchronizing the reference with the model explicitly through the Event monad.

Instances

ResultComputing Ref Source # 
ResultItemable (ResultValue a) => ResultProvider (Ref a) Source # 
(Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Ref (Array i e)) Source # 
ResultItemable (ResultValue [e]) => ResultProvider (Ref (Vector e)) Source # 
(ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Ref (TimingCounter a)) Source # 
(ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Ref (SamplingCounter a)) Source # 

refChanged :: Ref a -> Signal a Source #

Return a signal that notifies about every change of the reference state.

refChanged_ :: Ref a -> Signal () Source #

Return a signal that notifies about every change of the reference state.

newRef :: a -> Simulation (Ref a) Source #

Create a new reference.

readRef :: Ref a -> Event a Source #

Read the value of a reference.

writeRef :: Ref a -> a -> Event () Source #

Write a new value into the reference.

modifyRef :: Ref a -> (a -> a) -> Event () Source #

Mutate the contents of the reference.