aivika-5.1: 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.Base

Description

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.

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 # 

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.