imp-frp-0.0.0: Experimental FRP system.ContentsIndex
FRP.Imp.Internal
Description
Imperative programmer's Pragmatic FRP (Functional Rocket Programming) system.
Synopsis
force :: NFData a => a -> a
type Action = IO ()
type Time = Double
bigbang :: Time
data Void
void :: Void
type StateVar a = MVar a
newStateVar :: a -> IO (StateVar a)
readStateVar :: StateVar a -> IO a
takeStateVar :: StateVar a -> IO a
putStateVar :: StateVar a -> a -> IO ()
data Event a = forall s . Event (PNode s a)
data Reactive a = forall s . Reactive (PNode s a)
data UPNode a
= UEvent (Event a)
| UPushR (Reactive a)
| UPullR (Reactive a)
data XPNode = forall s a . XPNode (PNode s a)
data YPNode = forall s a . YPNode (PNode s a) Mode
data Mode
= Push
| Pull
ypnodeLabel :: YPNode -> (Unique, Mode)
upnodeLabel :: UPNode a -> Unique
upnodeToYPNode :: UPNode a -> YPNode
xpnodeLinks :: XPNode -> [YPNode]
xpnodeLabel :: XPNode -> Unique
unode :: Event a -> UPNode a
push :: Reactive a -> UPNode a
pull1 :: Reactive a -> UPNode a
type CBID = String
data NodeFun' u s a
= forall b . FFun1 (b -> a) (u b)
| forall b . NFun1 (b -> Maybe a) (u b)
| forall b c . NFun2 (Int -> b -> c -> Maybe a) (u b) (u c)
| forall b c d . NFun3 (Int -> b -> c -> d -> Maybe a) (u b) (u c) (u d)
| forall b . SFun1 (s -> b -> (s, Maybe a)) (u b)
| forall b c . SFun2 (Int -> s -> b -> c -> (s, Maybe a)) (u b) (u c)
| forall b c d . SFun3 (Int -> s -> b -> c -> d -> (s, Maybe a)) (u b) (u c) (u d)
| Callback CBID
| Never
mapNodeFun :: (forall b. u b -> v b) -> NodeFun' u s a -> NodeFun' v s a
nodeFunLinks :: (forall b. u b -> v) -> NodeFun' u s a -> [v]
type PNodeFun s a = NodeFun' UPNode s a
type DNodeFun s a = NodeFun' UDNode s a
type Dot = String
eventGraphviz :: Event a -> Dot
pnodeGraphviz :: XPNode -> Dot
dnodeGraphviz :: Map Unique XDNode -> Dot
data PNode s a = PNode {
pnodeLabel :: !!Unique
pnodeInit :: (s, a)
pnodeFun :: PNodeFun s a
}
pnode :: (s, a) -> PNodeFun s a -> PNode s a
newEvent :: s -> PNodeFun s a -> Event a
newReactive :: (s, a) -> PNodeFun s a -> Reactive a
reactiveInitValue :: Reactive a -> a
dummyVar :: MVar a
writeDummy :: a -> IO ()
newtype Unique = Unique {
unUnique :: Int
}
uniqueSupply :: MVar Unique
uniqueSet :: MVar (Set Unique)
newUnique :: a -> IO Unique
data UDNode a = forall s . UDNode (DNode s a)
data XDNode = forall s a . XDNode (DNode s a)
data YDNode = forall s a . YDNode (DNode s a) Mode
withModeD :: XDNode -> Mode -> YDNode
forgetModeP :: YPNode -> XPNode
data DNode s a = DNode {
dnodeLabel :: !!Unique
dnodeFun :: DNodeFun s a
dnodeForward :: [YDNode]
dnodeState :: StateVar (Time, s, a)
}
dnodeBackward :: DNode s a -> [XDNode]
xpnodeTable :: XPNode -> Map Unique XPNode
xdnodeTable :: XPNode -> Map Unique XDNode
evalFRP :: Action -> Event Action -> CBID -> Time -> a -> Action
readDNodeLast :: DNode s a -> IO a
writeDNodeLast :: DNode s a -> Time -> a -> IO ()
readUDNodeLast :: UDNode a -> IO a
updateDNode :: Time -> Unique -> DNode s a -> IO Bool
xdnodeForward :: XDNode -> [YDNode]
xdnodeLabel :: XDNode -> Unique
unsafeSetValueAndExecute :: Map Unique XDNode -> Action -> [Unique] -> XDNode -> Time -> a -> IO ()
propagateChanges :: Time -> Map Unique [Action] -> XDNode -> IO (Map Unique [Action])
Documentation
force :: NFData a => a -> a
type Action = IO ()
type Time = Double
bigbang :: Time
data Void
void :: Void
type StateVar a = MVar a
newStateVar :: a -> IO (StateVar a)
readStateVar :: StateVar a -> IO a
takeStateVar :: StateVar a -> IO a
putStateVar :: StateVar a -> a -> IO ()
data Event a
Discrete events
Constructors
forall s . Event (PNode s a)
show/hide Instances
data Reactive a
Discretely changing reactive values
Constructors
forall s . Reactive (PNode s a)
show/hide Instances
data UPNode a
Constructors
UEvent (Event a)
UPushR (Reactive a)
UPullR (Reactive a)
data XPNode
Constructors
forall s a . XPNode (PNode s a)
data YPNode
Constructors
forall s a . YPNode (PNode s a) Mode
data Mode
Constructors
Push
Pull
show/hide Instances
ypnodeLabel :: YPNode -> (Unique, Mode)
upnodeLabel :: UPNode a -> Unique
upnodeToYPNode :: UPNode a -> YPNode
xpnodeLinks :: XPNode -> [YPNode]
xpnodeLabel :: XPNode -> Unique
unode :: Event a -> UPNode a
push :: Reactive a -> UPNode a
pull1 :: Reactive a -> UPNode a
type CBID = String
data NodeFun' u s a
Constructors
forall b . FFun1 (b -> a) (u b)
forall b . NFun1 (b -> Maybe a) (u b)
forall b c . NFun2 (Int -> b -> c -> Maybe a) (u b) (u c)
forall b c d . NFun3 (Int -> b -> c -> d -> Maybe a) (u b) (u c) (u d)
forall b . SFun1 (s -> b -> (s, Maybe a)) (u b)
forall b c . SFun2 (Int -> s -> b -> c -> (s, Maybe a)) (u b) (u c)
forall b c d . SFun3 (Int -> s -> b -> c -> d -> (s, Maybe a)) (u b) (u c) (u d)
Callback CBID
Never
show/hide Instances
mapNodeFun :: (forall b. u b -> v b) -> NodeFun' u s a -> NodeFun' v s a
nodeFunLinks :: (forall b. u b -> v) -> NodeFun' u s a -> [v]
type PNodeFun s a = NodeFun' UPNode s a
type DNodeFun s a = NodeFun' UDNode s a
type Dot = String
eventGraphviz :: Event a -> Dot
pnodeGraphviz :: XPNode -> Dot
dnodeGraphviz :: Map Unique XDNode -> Dot
data PNode s a
Constructors
PNode
pnodeLabel :: !!Unique
pnodeInit :: (s, a)
pnodeFun :: PNodeFun s a
pnode :: (s, a) -> PNodeFun s a -> PNode s a
newEvent :: s -> PNodeFun s a -> Event a
newReactive :: (s, a) -> PNodeFun s a -> Reactive a
reactiveInitValue :: Reactive a -> a
dummyVar :: MVar a
writeDummy :: a -> IO ()
newtype Unique
Constructors
Unique
unUnique :: Int
show/hide Instances
uniqueSupply :: MVar Unique
uniqueSet :: MVar (Set Unique)
newUnique :: a -> IO Unique
data UDNode a
Constructors
forall s . UDNode (DNode s a)
data XDNode
Constructors
forall s a . XDNode (DNode s a)
show/hide Instances
data YDNode
Constructors
forall s a . YDNode (DNode s a) Mode
show/hide Instances
withModeD :: XDNode -> Mode -> YDNode
forgetModeP :: YPNode -> XPNode
data DNode s a
Constructors
DNode
dnodeLabel :: !!Unique
dnodeFun :: DNodeFun s a
dnodeForward :: [YDNode]
dnodeState :: StateVar (Time, s, a)
show/hide Instances
dnodeBackward :: DNode s a -> [XDNode]
xpnodeTable :: XPNode -> Map Unique XPNode
xdnodeTable :: XPNode -> Map Unique XDNode
evalFRP
::
=> ActionA "finalizer" action. Called after all the trigger propagation is done. For example postRedisplay in imp-glut.
-> Event ActionThe action(s) producing the output of the system
-> CBID -> Time -> a -> ActionThe result is a trigger action, to be used in callbacks in the adapter. Warning, it is unsafe! The type variable a has to match the (monomorphic!) type of the corresponding callback exported by the adapter!
This is the main function used by adapters. See imp-glut for an example on how to write an adapter.
readDNodeLast :: DNode s a -> IO a
writeDNodeLast :: DNode s a -> Time -> a -> IO ()
readUDNodeLast :: UDNode a -> IO a
updateDNode :: Time -> Unique -> DNode s a -> IO Bool
xdnodeForward :: XDNode -> [YDNode]
xdnodeLabel :: XDNode -> Unique
unsafeSetValueAndExecute :: Map Unique XDNode -> Action -> [Unique] -> XDNode -> Time -> a -> IO ()
propagateChanges :: Time -> Map Unique [Action] -> XDNode -> IO (Map Unique [Action])
Produced by Haddock version 2.4.1