|Maintainer||Ertugrul Soeylemez <firstname.lastname@example.org>|
The module contains the main
- data Wire where
- data WireState where
- data InhibitException = InhibitException String
- type Output = Either SomeException
- type SF = Wire Identity
- type Time = Double
- cleanupWireState :: WireState m -> IO ()
- inhibitEx :: String -> SomeException
- initWireState :: MonadIO m => IO (WireState m)
- mkGen :: (WireState m -> a -> m (Output b, Wire m a b)) -> Wire m a b
- noEvent :: SomeException
- toGen :: Monad m => Wire m a b -> WireState m -> a -> m (Output b, Wire m a b)
A wire is a network of signal transformers.
|WArr :: (a -> b) -> Wire m a b|
|WConst :: b -> Wire m a b|
|WGen :: (WireState m -> a -> m (Output b, Wire m a b)) -> Wire m a b|
|WId :: Wire m a a|
|Monad m => Arrow (Wire m)|
Arrow interface to signal networks.
|Monad m => ArrowZero (Wire m)|
The zero arrow always inhibits.
|Monad m => ArrowPlus (Wire m)|
Left-biased signal network combination. If the left arrow inhibits, the right arrow is tried. If both inhibit, their combination inhibits.
|Monad m => ArrowChoice (Wire m)|
Signal routing. Unused routes are frozen, until they are put back into use.
|MonadFix m => ArrowLoop (Wire m)|
Value recursion. Warning: Recursive signal networks must never
|Monad m => Category (Wire m)|
Identity signal network and signal network sequencing.
|Monad m => Functor (Wire m a)|
Map over the result of a signal network.
|Monad m => Applicative (Wire m a)|
Applicative interface to signal networks.
|Monad m => Alternative (Wire m a)|
The state of the wire.
Events are signals, which can be absent. They usually denote discrete occurences of certain events.
Inhibition exception with an informative message. This exception is the result of signal inhibition, where no further exception information is available.
Create a generic wire from the given function. This is a smart
constructor. Please use it instead of the