Maintainer | Ertugrul Soeylemez <es@ertes.de> |
---|---|
Safe Haskell | None |
Event-related wire combinators.
- eitherE :: (Monad m, Monoid e) => (b1 -> b) -> (b2 -> b) -> (b1 -> b2 -> b) -> Wire e m a b1 -> Wire e m a b2 -> Wire e m a b
- (<||>) :: (Monad m, Monoid e, Semigroup b) => Wire e m a b -> Wire e m a b -> Wire e m a b
- hold :: Monad m => b -> Wire e m a b -> Wire e m a b
- hold_ :: Monad m => Wire e m a b -> Wire e m a b
- holdFor :: Monad m => Time -> Wire e m a b -> Wire e m a b
- holdForI :: Monad m => Time -> Wire e m a b -> Wire e m a b
- (<!>) :: Monad m => Wire e m a b -> e -> Wire e m a b
- event :: Monad m => Wire e m a b -> Wire e m a (Maybe b)
- exhibit :: Monad m => Wire e m a b -> Wire e m a (Either e b)
- gotEvent :: Monad m => Wire e m a b -> Wire e m a Bool
- notE :: (Monad m, Monoid e) => Event e m a -> Event e m a
Combinators
:: (Monad m, Monoid e) | |
=> (b1 -> b) | Only left. |
-> (b2 -> b) | Only right. |
-> (b1 -> b2 -> b) | Both. |
-> Wire e m a b1 | First wire. |
-> Wire e m a b2 | Second wire. |
-> Wire e m a b |
Try both wires combining their results with the given functions.
- Like argument wires.
- Inhibits: when both wires inhibit.
(<||>) :: (Monad m, Monoid e, Semigroup b) => Wire e m a b -> Wire e m a b -> Wire e m a bSource
Semigroup version of eitherE
.
Holding events
hold :: Monad m => b -> Wire e m a b -> Wire e m a bSource
Hold the latest event. Produces the last produced value starting with the given one.
- Depends: like argument wire.
hold_ :: Monad m => Wire e m a b -> Wire e m a bSource
Hold the event. Once the argument wire produces the produced value is held until the argument wire produces again.
- Depends: like argument wire.
- Inhibits: until the argument wire produces for the first time.
holdFor :: Monad m => Time -> Wire e m a b -> Wire e m a bSource
Hold the event for the given amount of time. When the argument wire produces, the produced value is kept for the given amount of time. If the wire produces again while another value is kept, the new value takes precedence.
- Depends: like argument wire.
- Inhibits: as described.
holdForI :: Monad m => Time -> Wire e m a b -> Wire e m a bSource
Hold the event for the given number of instances. When the argument wire produces, the produced value is kept for the given number of instances. If the wire produces again while another value is kept, the new value takes precedence.
- Depends: like argument wire.
- Inhibits: as described.
Inhibition
(<!>) :: Monad m => Wire e m a b -> e -> Wire e m a bSource
If the argument wire inhibits, inhibit with the given exception instead.
- Depends: like argument wire.
- Inhibits: like argument wire.
event :: Monad m => Wire e m a b -> Wire e m a (Maybe b)Source
Prevent a wire from inhibiting. Instead produce a signal wrapped
in Maybe
.
Note: You probably shouldn't use this function.
- Depends: like argument wire.
exhibit :: Monad m => Wire e m a b -> Wire e m a (Either e b)Source
Prevent a wire from inhibiting. Instead produce the inhibition value.
Note: You probably shouldn't use this function.
- Depends: like argument wire.