- data Atom a
- 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], ([Const], [Const], [Const], [Const])))
- var :: Expr a => Name -> a -> Atom (V a)
- var' :: Name -> Type -> Atom (V a)
- array :: Expr a => Name -> [a] -> Atom (A a)
- addName :: Name -> Atom Name
- get :: Atom (Global, AtomDB)
- put :: (Global, AtomDB) -> Atom ()
Atom monad and container.
AtomDB | |
|
Rule | |
|
Type Aliases and Utilities
elaborate :: Name -> Atom () -> IO (Maybe ([Rule], ([Const], [Const], [Const], [Const])))Source
A Relation is used for relative performance constraints between Action
s.
data Relation = Higher UID | Lower UID deriving (Show, Eq)
Given a top level name and design, elabortes design and returns a design database.