Safe Haskell | None |
---|
Basic rules examples.
- voidRule :: Nomex a -> Nomex RuleResp
- activateRule :: RuleNumber -> Nomex Bool
- activateRule_ :: RuleNumber -> Nomex ()
- rejectRule :: RuleNumber -> Nomex Bool
- rejectRule_ :: RuleNumber -> Nomex ()
- getRules :: Nomex [Rule]
- getActiveRules :: Nomex [Rule]
- getRule :: RuleNumber -> Nomex (Maybe Rule)
- getRulesByNumbers :: [RuleNumber] -> Nomex [Rule]
- getRuleFuncs :: Nomex [RuleFunc]
- addRule :: Rule -> Nomex Bool
- addRule_ :: Rule -> Nomex ()
- addRuleParams :: RuleName -> RuleFunc -> RuleCode -> String -> Nomex RuleNumber
- getFreeRuleNumber :: Nomex RuleNumber
- getFreeNumber :: (Eq a, Num a, Enum a) => [a] -> a
- suppressRule :: RuleNumber -> Nomex Bool
- suppressRule_ :: RuleNumber -> Nomex ()
- suppressAllRules :: Nomex Bool
- modifyRule :: RuleNumber -> Rule -> Nomex Bool
- autoActivate :: RuleFunc
- legal :: RuleFunc
- illegal :: RuleFunc
- maybeMetaRule :: Rule -> Nomex (Maybe (Rule -> Nomex BoolResp))
- activateOrReject :: Rule -> Bool -> Nomex ()
- noPlayPlayer :: PlayerNumber -> RuleFunc
- autoDelete :: Nomex ()
- eraseAllRules :: PlayerNumber -> Nomex Bool
- getSelfRuleNumber :: Nomex RuleNumber
- getSelfRule :: Nomex Rule
- defaultRule :: Rule
- mapMaybeM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
Rule management
activateRule :: RuleNumber -> Nomex BoolSource
activate a rule: change its state to Active and execute it
activateRule_ :: RuleNumber -> Nomex ()Source
rejectRule :: RuleNumber -> Nomex BoolSource
reject a rule: change its state to Suppressed and suppresses all its environment (events, variables, inputs) the rule can be activated again later
rejectRule_ :: RuleNumber -> Nomex ()Source
getRulesByNumbers :: [RuleNumber] -> Nomex [Rule]Source
addRuleParams :: RuleName -> RuleFunc -> RuleCode -> String -> Nomex RuleNumberSource
getFreeNumber :: (Eq a, Num a, Enum a) => [a] -> aSource
suppressRule_ :: RuleNumber -> Nomex ()Source
modifyRule :: RuleNumber -> Rule -> Nomex BoolSource
autoActivate :: RuleFuncSource
This rule will activate automatically any new rule.
This rule will forbid any new rule to delete the rule in parameter immutableRule :: RuleNumber -> RuleFunc immutableRule rn = return $ Meta f where f r = do protectedRule <- getRule rn case protectedRule of Just pr -> case _rRuleFunc r of RuleRule paramRule -> paramRule pr _ -> return $ BoolResp True Nothing -> return $ BoolResp True
A rule will be always legal
maybeMetaRule :: Rule -> Nomex (Maybe (Rule -> Nomex BoolResp))Source
active metarules are automatically used to evaluate a given rule checkWithMetarules :: Rule -> Nomex (Event (Message ForAgainst) checkWithMetarules rule = do rs <- getActiveRules (metas :: [Rule -> Nomex BoolResp]) <- mapMaybeM maybeMetaRule rs let (evals :: [Nomex BoolResp]) = map (meta -> meta rule) metas foldr (&&*) true evals
activateOrReject :: Rule -> Bool -> Nomex ()Source
activate or reject a rule
noPlayPlayer :: PlayerNumber -> RuleFuncSource
Player p cannot propose anymore rules
autoDelete :: Nomex ()Source
a rule can autodelete itself (generaly after having performed some actions)
eraseAllRules :: PlayerNumber -> Nomex BoolSource
All rules from player p are erased:
getSelfRuleNumber :: Nomex RuleNumberSource
allows a rule to retrieve its own number (for auto-deleting for example)
a default rule