Nomyx-Language-0.4.1: Language to express rules for Nomic

Safe HaskellNone

Language.Nomyx.Variables

Contents

Description

All the building blocks to allow rules to build variables.

Synopsis

Variables

newVar :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (Maybe (V a))Source

variable creation

newVar_ :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (V a)Source

readVar :: (Typeable a, Show a, Eq a) => V a -> Nomex (Maybe a)Source

variable reading

readVar_ :: forall a. (Typeable a, Show a, Eq a) => V a -> Nomex aSource

writeVar :: (Typeable a, Show a, Eq a) => V a -> a -> Nomex BoolSource

variable writing

writeVar_ :: (Typeable a, Show a, Eq a) => V a -> a -> Nomex ()Source

modifyVar :: (Typeable a, Show a, Eq a) => V a -> (a -> a) -> Nomex ()Source

modify a variable using the provided function

delVar :: V a -> Nomex BoolSource

delete variable

delVar_ :: V a -> Nomex ()Source

Message Variable

data VEvent a Source

a MsgVar is a variable with a message attached, allowing to trigger registered functions anytime the var if modified

Constructors

VUpdated a 
VDeleted 

Instances

Typeable1 VEvent 
Eq a => Eq (VEvent a) 
Show a => Show (VEvent a) 

data MsgVar a Source

Constructors

MsgVar 

Fields

message :: Msg (VEvent a)
 
variable :: V a
 

newMsgVar :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (Maybe (MsgVar a))Source

newMsgVar_ :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (MsgVar a)Source

newMsgVar' :: (Typeable a, Show a, Eq a) => VarName -> a -> (VEvent a -> Nomex ()) -> Nomex (Maybe (MsgVar a))Source

writeMsgVar :: (Typeable a, Show a, Eq a) => MsgVar a -> a -> Nomex BoolSource

writeMsgVar_ :: (Typeable a, Show a, Eq a) => MsgVar a -> a -> Nomex ()Source

readMsgVar :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Maybe a)Source

readMsgVar_ :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex aSource

modifyMsgVar :: (Typeable a, Show a, Eq a) => MsgVar a -> (a -> a) -> Nomex ()Source

onMsgVarChange :: (Typeable a, Show a, Eq a) => MsgVar a -> (VEvent a -> Nomex ()) -> Nomex ()Source

onMsgVarEvent :: (Typeable a, Show a, Eq a) => MsgVar a -> (a -> Nomex b) -> (a -> b -> Nomex ()) -> (b -> Nomex ()) -> Nomex ()Source

getMsgVarMessage :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Msg (VEvent a))Source

get the messsage triggered when the array is filled

getMsgVarData :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Maybe a)Source

get the association array

Variable arrays

type ArrayVar i a = MsgVar [(i, Maybe a)]Source

ArrayVar is an indexed array with a signal attached triggered at every change. | each indexed elements starts empty (value=Nothing).

newArrayVar :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> Nomex (Maybe (ArrayVar i a))Source

initialize an empty ArrayVar

newArrayVar_ :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> Nomex (ArrayVar i a)Source

newArrayVar' :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> (VEvent [(i, Maybe a)] -> Nomex ()) -> Nomex (Maybe (ArrayVar i a))Source

initialize an empty ArrayVar, registering a callback that will be triggered at every change

newArrayVarOnce :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => VarName -> [i] -> (VEvent [(i, Maybe a)] -> Nomex ()) -> Nomex (Maybe (ArrayVar i a))Source

initialize an empty ArrayVar, registering a callback. the ArrayVar will be deleted when full

cleanOnFull :: (Typeable a, Show a, Eq a, Ord i, Typeable i, Show i) => ArrayVar i a -> Nomex ()Source

putArrayVar :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> i -> a -> Nomex BoolSource

store one value and the given index. If this is the last filled element, the registered callbacks are triggered.

putArrayVar_ :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> i -> a -> Nomex ()Source