- type Atom = StateT (Global, AtomDB) IO
- data AtomDB = AtomDB {
- atomId :: Int
- atomName :: Name
- atomNames :: [Name]
- atomEnable :: UE
- atomSubs :: [AtomDB]
- atomPeriod :: Int
- atomAssigns :: [(UV, UE)]
- atomActions :: [([String] -> String, [UE])]
- data Global = Global {}
- data Rule = Rule {
- ruleId :: Int
- ruleName :: Name
- ruleEnable :: UE
- ruleAssigns :: [(UV, UE)]
- ruleActions :: [([String] -> String, [UE])]
- rulePeriod :: Int
- buildAtom :: Global -> Name -> Atom a -> IO (a, (Global, AtomDB))
- type UID = Int
- type Name = String
- type Path = [Name]
- elaborate :: Name -> Atom () -> IO (Maybe ([Rule], [UV], [(String, UE)]))
- var :: Name -> Const -> Atom (V a)
- addName :: Name -> Atom Name
Atom monad and container.
AtomDB | |
|
Rule | |
|