definition module uFPL.Sim from Data.Map import :: Map import uFPL from uFPL.C import :: Signedness :: UFPLException = LiftException String | NoShareException ISharedRef | WriteToROShare ISharedRef | RunException instance toString UFPLException :: ReadOrWrite = ReadOnly | ReadWrite :: IShared = ISharedInt String Int ReadOrWrite | ISharedUInt String Int ReadOrWrite | ISharedLong String Int ReadOrWrite | ISharedULong String Int ReadOrWrite | ISharedBool String Bool ReadOrWrite :: ISharedRef :== String :: IShares :== [IShared] :: IExpr = ILitInt Int | ILitBool Bool | ILitChar Char | IShared ISharedRef | IAdd IExpr IExpr | ISub IExpr IExpr | IMul IExpr IExpr | IDiv IExpr IExpr | IEq IExpr IExpr | ILt IExpr IExpr | IAnd IExpr IExpr | IOr IExpr IExpr | IIf IExpr IExpr IExpr :: ITrigger = IChange ISharedRef | IBecomes ISharedRef IExpr | ITAnd ITrigger ITrigger | ITOr ITrigger ITrigger :: IRule = IAssign ISharedRef IExpr | IWhen IExpr [IRule] | ITrigger ITrigger [IRule] | ISetCursor (IExpr, IExpr) | IPrint IExpr :: INamedRule = Rule String [IRule] :: IShareState t = { isval :: t , isdirty :: Int , issubscriptions :: Int } :: IState = { isvalues :: Map String (IShareState Int) , csvalues :: Map String (IShareState Char) , bsvalues :: Map String (IShareState Bool) , display :: Display } simulate :: [NamedRule] -> *World -> *World