Safe Haskell | None |
---|
- data Var a
- data ArrayVar a
- arraySize :: ArrayVar a -> Int
- varName :: Var a -> Text
- arrayVarName :: ArrayVar a -> Text
- newVar :: (ProcMonad m, ProcType a) => a -> m Preamble (Var a)
- readVar :: (ProcMonad m, ProcType a) => Var a -> m c a
- writeVar :: (ProcMonad m, ProcType a) => Var a -> a -> m c ()
- newArrayVar :: (ProcMonad m, ProcType a) => [a] -> m Preamble (ArrayVar a)
- readArrayVar :: (ProcMonad m, Monad (m c), ProcType a) => ArrayVar a -> Proc_Int -> m c a
- writeArrayVar :: (ProcMonad m, ProcType a) => ArrayVar a -> Proc_Int -> a -> m c ()
Variables
The variable system presented here is actually an artifact to make explicit
which values may change over time and which don't. It also guides the user
to create variables before use them and do so in a more natural way. Somehow,
it tries to be similar to IORef
s, while they aren't. Strictly speaking, they
do not contain any value, but it will contain a value when processing.js executes
the resulting code. To make sure you are doing the right thing, variables are
typed, thus forcing you to feed the correct functions with the correct values.
Functions
arrayVarName :: ArrayVar a -> TextSource
Get the name of a variable storing an array.
newVar :: (ProcMonad m, ProcType a) => a -> m Preamble (Var a)Source
Create a new variable with a starting value.
newArrayVar :: (ProcMonad m, ProcType a) => [a] -> m Preamble (ArrayVar a)Source
Create a new array variable with a starting list of values.