Safe Haskell | None |
---|
This module containt the type definitions necessary to build a Nomic rule.
- type PlayerNumber = Int
- type PlayerName = String
- type RuleNumber = Int
- type RuleName = String
- type RuleDesc = String
- type RuleText = String
- type RuleCode = String
- type EventNumber = Int
- type EventName = String
- type VarName = String
- type GameName = String
- type Code = String
- data Nomex a where
- NewVar :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (Maybe (V a))
- ReadVar :: (Typeable a, Show a, Eq a) => V a -> Nomex (Maybe a)
- WriteVar :: (Typeable a, Show a, Eq a) => V a -> a -> Nomex Bool
- DelVar :: V a -> Nomex Bool
- OnEvent :: (Typeable e, Show e, Eq e) => Event e -> ((EventNumber, EventData e) -> Nomex ()) -> Nomex EventNumber
- DelEvent :: EventNumber -> Nomex Bool
- DelAllEvents :: (Typeable e, Show e, Eq e) => Event e -> Nomex ()
- SendMessage :: (Typeable a, Show a, Eq a) => Event (Message a) -> a -> Nomex ()
- ProposeRule :: Rule -> Nomex Bool
- ActivateRule :: RuleNumber -> Nomex Bool
- RejectRule :: RuleNumber -> Nomex Bool
- AddRule :: Rule -> Nomex Bool
- DelRule :: RuleNumber -> Nomex Bool
- ModifyRule :: RuleNumber -> Rule -> Nomex Bool
- GetRules :: Nomex [Rule]
- GetPlayers :: Nomex [PlayerInfo]
- SetPlayerName :: PlayerNumber -> PlayerName -> Nomex Bool
- DelPlayer :: PlayerNumber -> Nomex Bool
- SetVictory :: [PlayerNumber] -> Nomex ()
- Output :: PlayerNumber -> String -> Nomex ()
- CurrentTime :: Nomex UTCTime
- SelfRuleNumber :: Nomex RuleNumber
- Return :: a -> Nomex a
- Bind :: Nomex a -> (a -> Nomex b) -> Nomex b
- ThrowError :: String -> Nomex a
- CatchError :: Nomex a -> (String -> Nomex a) -> Nomex a
- data V a = V {}
- data Var = forall a . (Typeable a, Show a, Eq a) => Var {
- _vRuleNumber :: Int
- _vName :: String
- vData :: a
- type Output = (PlayerNumber, String)
- type Id a = a
- data Player
- data RuleEvent
- data Time
- data EvRule
- data Message m
- data InputChoice c
- data InputString
- data Victory
- data Event a where
- Player :: Player -> Event Player
- RuleEv :: RuleEvent -> Event RuleEvent
- Time :: UTCTime -> Event Time
- Message :: String -> Event (Message m)
- InputChoice :: (Eq c, Show c) => PlayerNumber -> String -> [c] -> c -> Event (InputChoice c)
- InputString :: PlayerNumber -> String -> Event InputString
- Victory :: Event Victory
- data EventData a where
- PlayerData :: { } -> EventData Player
- RuleData :: { } -> EventData RuleEvent
- TimeData :: { } -> EventData Time
- MessageData :: Show m => {
- messageData :: m
- InputChoiceData :: Show c => {
- inputChoiceData :: c
- InputStringData :: { } -> EventData InputString
- VictoryData :: {
- victoryData :: [PlayerInfo]
- data EventStatus
- data EventHandler where
- EH :: (Typeable e, Show e, Eq e) => {
- _eventNumber :: EventNumber
- _ruleNumber :: RuleNumber
- event :: Event e
- handler :: (EventNumber, EventData e) -> Nomex ()
- _evStatus :: EventStatus
- EH :: (Typeable e, Show e, Eq e) => {
- type Msg a = Event (Message a)
- type MsgData a = EventData (Message a)
- type RuleFunc = Nomex RuleResp
- data RuleResp
- data BoolResp
- data Rule = Rule {}
- data RuleStatus
- data SubmitRule = SubmitRule RuleName RuleDesc RuleCode
- data PlayerInfo = PlayerInfo {}
- data Game = Game {
- _gameName :: GameName
- _gameDesc :: GameDesc
- _rules :: [Rule]
- _players :: [PlayerInfo]
- _variables :: [Var]
- _events :: [EventHandler]
- _outputs :: [Output]
- _victory :: [PlayerNumber]
- _currentTime :: UTCTime
- data GameDesc = GameDesc {}
- displayGame :: Game -> String
- vName :: Lens Var String
- vRuleNumber :: Lens Var Int
- evStatus :: Lens EventHandler EventStatus
- ruleNumber :: Lens EventHandler RuleNumber
- eventNumber :: Lens EventHandler EventNumber
- playerName :: Lens PlayerInfo String
- playerNumber :: Lens PlayerInfo PlayerNumber
- rAssessedBy :: Lens Rule (Maybe RuleNumber)
- rStatus :: Lens Rule RuleStatus
- rRuleFunc :: Lens Rule RuleFunc
- rRuleCode :: Lens Rule Code
- rProposedBy :: Lens Rule PlayerNumber
- rDescription :: Lens Rule String
- rName :: Lens Rule RuleName
- rNumber :: Lens Rule RuleNumber
- agora :: Lens GameDesc String
- desc :: Lens GameDesc String
- currentTime :: Lens Game UTCTime
- victory :: Lens Game [PlayerNumber]
- outputs :: Lens Game [Output]
- events :: Lens Game [EventHandler]
- variables :: Lens Game [Var]
- players :: Lens Game [PlayerInfo]
- rules :: Lens Game [Rule]
- gameDesc :: Lens Game GameDesc
- gameName :: Lens Game GameName
Documentation
type PlayerNumber = IntSource
type PlayerName = StringSource
type RuleNumber = IntSource
type EventNumber = IntSource
Nomyx Expression
A Nomex (Nomyx Expression) allows the players to write rules. | within the rules, you can access and modify the state of the game. | It is a compositional algebra defined with a GADT.
Variables
stores the variable's data
type Output = (PlayerNumber, String)Source
Events
data InputChoice c Source
Typeable1 InputChoice | |
Eq (InputChoice a) | |
Show a => Show (InputChoice a) |
events names
Player :: Player -> Event Player | |
RuleEv :: RuleEvent -> Event RuleEvent | |
Time :: UTCTime -> Event Time | |
Message :: String -> Event (Message m) | |
InputChoice :: (Eq c, Show c) => PlayerNumber -> String -> [c] -> c -> Event (InputChoice c) | |
InputString :: PlayerNumber -> String -> Event InputString | |
Victory :: Event Victory |
data associated with each events
PlayerData :: PlayerInfo -> EventData Player | |
RuleData :: Rule -> EventData RuleEvent | |
TimeData :: UTCTime -> EventData Time | |
MessageData :: Show m => m -> EventData (Message m) | |
| |
InputChoiceData :: Show c => c -> EventData (InputChoice c) | |
| |
InputStringData :: String -> EventData InputString | |
VictoryData :: [PlayerInfo] -> EventData Victory | |
|
data EventHandler whereSource
EH :: (Typeable e, Show e, Eq e) => EventNumber -> RuleNumber -> Event e -> ((EventNumber, EventData e) -> Nomex ()) -> EventStatus -> EventHandler | |
|
Rule
Return type of a rule function. it can be either nothing or another rule.
An informationnal structure about a rule
Rule | |
|
data RuleStatus Source
the status of a rule.
data SubmitRule Source
Player
data PlayerInfo Source
informations on players
Game
The state of the game:
Game | |
|
displayGame :: Game -> StringSource
events :: Lens Game [EventHandler]Source
players :: Lens Game [PlayerInfo]Source