aivika-5.1: A multi-method simulation library

CopyrightCopyright (c) 2009-2017 David Sorokin <>
MaintainerDavid Sorokin <>
Safe HaskellNone



Tested with: GHC 8.0.1

This module defines a light-weight and more fast version of an updatable reference that depends on the event queue but that doesn't supply with the signal notification.



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.


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 # 

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.