Safe Haskell | None |
---|
- delay :: (ArrowApply a, Occasional b) => ProcessA a b b
- hold :: ArrowApply a => b -> ProcessA a (Event b) b
- accum :: ArrowApply a => b -> ProcessA a (Event (b -> b)) b
- edge :: (ArrowApply a, Eq b) => ProcessA a b (Event b)
- passRecent :: (ArrowApply a, Occasional o) => ProcessA a e (Event b) -> ProcessA a (e, b) o -> ProcessA a e o
- withRecent :: (ArrowApply a, Occasional o) => ProcessA a (e, b) o -> ProcessA a (e, Event b) o
- switch :: ArrowApply a => ProcessA a b (c, Event t) -> (t -> ProcessA a b c) -> ProcessA a b c
- dSwitch :: ArrowApply a => ProcessA a b (c, Event t) -> (t -> ProcessA a b c) -> ProcessA a b c
- rSwitch :: ArrowApply a => ProcessA a b c -> ProcessA a (b, Event (ProcessA a b c)) c
- drSwitch :: ArrowApply a => ProcessA a b c -> ProcessA a (b, Event (ProcessA a b c)) c
- kSwitch :: ArrowApply a => ProcessA a b c -> ProcessA a (b, c) (Event t) -> (ProcessA a b c -> t -> ProcessA a b c) -> ProcessA a b c
- dkSwitch :: ArrowApply a => ProcessA a b c -> ProcessA a (b, c) (Event t) -> (ProcessA a b c -> t -> ProcessA a b c) -> ProcessA a b c
- pSwitch :: (ArrowApply a, Traversable col) => (forall sf. b -> col sf -> col (ext, sf)) -> col (ProcessA a ext c) -> ProcessA a (b, col c) (Event mng) -> (col (ProcessA a ext c) -> mng -> ProcessA a b (col c)) -> ProcessA a b (col c)
- pSwitchB :: (ArrowApply a, Traversable col) => col (ProcessA a b c) -> ProcessA a (b, col c) (Event mng) -> (col (ProcessA a b c) -> mng -> ProcessA a b (col c)) -> ProcessA a b (col c)
- rpSwitch :: (ArrowApply a, Traversable col) => (forall sf. b -> col sf -> col (ext, sf)) -> col (ProcessA a ext c) -> ProcessA a (b, Event (col (ProcessA a ext c) -> col (ProcessA a ext c))) (col c)
- rpSwitchB :: (ArrowApply a, Traversable col) => col (ProcessA a b c) -> ProcessA a (b, Event (col (ProcessA a b c) -> col (ProcessA a b c))) (col c)
- tee :: ArrowApply a => ProcessA a (Event b1, Event b2) (Event (Either b1 b2))
- gather :: (ArrowApply a, Foldable f) => ProcessA a (f (Event b)) (Event b)
- sample :: ArrowApply a => ProcessA a (Event b1, Event b2) [b1]
- source :: ArrowApply a => [c] -> ProcessA a (Event b) (Event c)
- fork :: (ArrowApply a, Foldable f) => ProcessA a (Event (f b)) (Event b)
- filter :: ArrowApply a => a o Bool -> ProcessA a (Event o) (Event o)
- echo :: ArrowApply a => ProcessA a (Event b) (Event b)
- anytime :: ArrowApply a => a b c -> ProcessA a (Event b) (Event c)
- par :: (ArrowApply a, Traversable col) => (forall sf. b -> col sf -> col (ext, sf)) -> col (ProcessA a ext c) -> ProcessA a b (col c)
- parB :: (ArrowApply a, Traversable col) => col (ProcessA a b c) -> ProcessA a b (col c)
- onEnd :: (ArrowApply a, Occasional b) => ProcessA a b (Event ())
AFRP-like utilities
delay :: (ArrowApply a, Occasional b) => ProcessA a b bSource
passRecent :: (ArrowApply a, Occasional o) => ProcessA a e (Event b) -> ProcessA a (e, b) o -> ProcessA a e oSource
withRecent :: (ArrowApply a, Occasional o) => ProcessA a (e, b) o -> ProcessA a (e, Event b) oSource
Switches
Switches inspired by Yampa library.
Signature is almost same, but collection requirement is not only Functor
,
but Traversable
. This is because of side effects.
switch :: ArrowApply a => ProcessA a b (c, Event t) -> (t -> ProcessA a b c) -> ProcessA a b cSource
dSwitch :: ArrowApply a => ProcessA a b (c, Event t) -> (t -> ProcessA a b c) -> ProcessA a b cSource
kSwitch :: ArrowApply a => ProcessA a b c -> ProcessA a (b, c) (Event t) -> (ProcessA a b c -> t -> ProcessA a b c) -> ProcessA a b cSource
dkSwitch :: ArrowApply a => ProcessA a b c -> ProcessA a (b, c) (Event t) -> (ProcessA a b c -> t -> ProcessA a b c) -> ProcessA a b cSource
pSwitch :: (ArrowApply a, Traversable col) => (forall sf. b -> col sf -> col (ext, sf)) -> col (ProcessA a ext c) -> ProcessA a (b, col c) (Event mng) -> (col (ProcessA a ext c) -> mng -> ProcessA a b (col c)) -> ProcessA a b (col c)Source
pSwitchB :: (ArrowApply a, Traversable col) => col (ProcessA a b c) -> ProcessA a (b, col c) (Event mng) -> (col (ProcessA a b c) -> mng -> ProcessA a b (col c)) -> ProcessA a b (col c)Source
rpSwitch :: (ArrowApply a, Traversable col) => (forall sf. b -> col sf -> col (ext, sf)) -> col (ProcessA a ext c) -> ProcessA a (b, Event (col (ProcessA a ext c) -> col (ProcessA a ext c))) (col c)Source
rpSwitchB :: (ArrowApply a, Traversable col) => col (ProcessA a b c) -> ProcessA a (b, Event (col (ProcessA a b c) -> col (ProcessA a b c))) (col c)Source
Other utility arrows
source :: ArrowApply a => [c] -> ProcessA a (Event b) (Event c)Source
It's also possible that source is defined without any await.
But awaits are useful to synchronize other inputs.
par :: (ArrowApply a, Traversable col) => (forall sf. b -> col sf -> col (ext, sf)) -> col (ProcessA a ext c) -> ProcessA a b (col c)Source
onEnd :: (ArrowApply a, Occasional b) => ProcessA a b (Event ())Source