Safe Haskell | None |
---|---|
Language | Haskell98 |
All the building blocks to allow rules to build variables. for example, you can create a variable with: do newMsgVar_ MyMoney (0::Int)
- data V a = V {}
- data VEvent a
- data MsgVar a = MsgVar {}
- newVar :: (Typeable a, Show a) => VarName -> a -> Nomex (Maybe (V a))
- newVar_ :: (Typeable a, Show a) => VarName -> a -> Nomex (V a)
- newVar' :: (Typeable a, Show a) => V a -> a -> Nomex Bool
- readVar :: (Typeable a, Show a) => V a -> NomexNE (Maybe a)
- readVar_ :: (Typeable a, Show a) => V a -> Nomex a
- writeVar :: (Typeable a, Show a) => V a -> a -> Nomex Bool
- modifyVar :: (Typeable a, Show a) => V a -> (a -> a) -> Nomex Bool
- delVar :: V a -> Nomex Bool
- newMsgVar :: (Typeable a, Show a) => VarName -> a -> Nomex (Maybe (MsgVar a))
- newMsgVar_ :: (Typeable a, Show a) => VarName -> a -> Nomex (MsgVar a)
- newMsgVar' :: (Typeable a, Show a) => MsgVar a -> a -> Nomex Bool
- readMsgVar :: (Typeable a, Show a) => MsgVar a -> NomexNE (Maybe a)
- readMsgVar_ :: (Typeable a, Show a) => MsgVar a -> Nomex a
- writeMsgVar :: (Typeable a, Show a) => MsgVar a -> a -> Nomex Bool
- modifyMsgVar :: (Typeable a, Show a) => MsgVar a -> (a -> a) -> Nomex Bool
- delMsgVar :: (Typeable a, Show a) => MsgVar a -> Nomex Bool
- msgVar :: String -> MsgVar a
- newMsgVarOnEvent :: (Typeable a, Show a, Eq a) => VarName -> a -> (VEvent a -> Nomex ()) -> Nomex (Maybe (MsgVar a))
- onMsgVarEvent :: (Typeable a, Show a) => MsgVar a -> (VEvent a -> Nomex ()) -> Nomex EventNumber
- onMsgVarChange :: (Typeable a, Show a, Eq a) => MsgVar a -> (a -> Nomex b) -> (a -> b -> Nomex ()) -> (b -> Nomex ()) -> Nomex EventNumber
- onMsgVarDelete :: (Typeable a, Show a) => MsgVar a -> Nomex () -> Nomex EventNumber
- getMsgVarMessage :: (Typeable a, Show a) => MsgVar a -> NomexNE (Msg (VEvent a))
- getMsgVarData :: (Typeable a, Show a) => MsgVar a -> NomexNE (Maybe a)
- getMsgVarData_ :: (Typeable a, Show a) => MsgVar a -> Nomex a
- getMsgVarName :: (Typeable a, Show a) => MsgVar a -> String
- type ArrayVar i a = MsgVar [(i, Maybe a)]
- newArrayVar :: (Typeable a, Show a, Typeable i, Show i) => VarName -> [i] -> Nomex (Maybe (ArrayVar i a))
- newArrayVar_ :: (Typeable a, Show a, Typeable i, Show i) => VarName -> [i] -> Nomex (ArrayVar i a)
- 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))
- newArrayVarOnce :: (Typeable a, Show a, Eq a, Typeable i, Show i, Ord i) => VarName -> [i] -> (VEvent [(i, Maybe a)] -> Nomex ()) -> Nomex (Maybe (ArrayVar i a))
- cleanOnFull :: (Typeable a, Show a, Eq a, Typeable i, Show i, Ord i) => ArrayVar i a -> Nomex ()
- isFullArrayVar_ :: (Typeable a, Show a, Typeable i, Show i, Ord i) => ArrayVar i a -> NomexNE Bool
- putArrayVar :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i, Ord i) => ArrayVar i a -> i -> a -> Nomex Bool
- putArrayVar_ :: (Typeable a, Show a, Eq a, Typeable i, Show i, Ord i) => ArrayVar i a -> i -> a -> Nomex ()
Documentation
a MsgVar is a variable with a message attached, allowing to trigger registered functions anytime the var if modified
modifyVar :: (Typeable a, Show a) => V a -> (a -> a) -> Nomex Bool Source
modify a variable using the provided function
newMsgVarOnEvent :: (Typeable a, Show a, Eq a) => VarName -> a -> (VEvent a -> Nomex ()) -> Nomex (Maybe (MsgVar a)) Source
create a new MsgVar and register callback in case of change (update, delete)
onMsgVarEvent :: (Typeable a, Show a) => MsgVar a -> (VEvent a -> Nomex ()) -> Nomex EventNumber Source
:: (Typeable a, Show a, Eq a) | |
=> MsgVar a | the MsgVar |
-> (a -> Nomex b) | callback on creation (called immediatly) |
-> (a -> b -> Nomex ()) | callback on update |
-> (b -> Nomex ()) | callback on delete |
-> Nomex EventNumber | event number generated for update and delete |
adds a callback for each of the MsgVar events: Create, Update, Delete
onMsgVarDelete :: (Typeable a, Show a) => MsgVar a -> Nomex () -> Nomex EventNumber Source
getMsgVarMessage :: (Typeable a, Show a) => MsgVar a -> NomexNE (Msg (VEvent a)) Source
get the messsage triggered when the array is filled
getMsgVarData :: (Typeable a, Show a) => MsgVar a -> NomexNE (Maybe a) Source
get the association array
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, Typeable i, Show i) => VarName -> [i] -> Nomex (Maybe (ArrayVar i a)) Source
initialize an empty ArrayVar
newArrayVar_ :: (Typeable a, Show a, Typeable i, Show 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 :: (Typeable a, Show a, Eq a, Typeable i, Show i, Ord 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, Typeable i, Show i, Ord i) => ArrayVar i a -> Nomex () Source
isFullArrayVar_ :: (Typeable a, Show a, Typeable i, Show i, Ord i) => ArrayVar i a -> NomexNE Bool Source