|Maintainer||Ertugrul Soeylemez <email@example.com>|
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.
|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
inhibit. Make use of
|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.
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