loopSP :: SP a a -> SP a a loopLeftSP :: SP (a ⊕ b1) (a ⊕ b2) -> SP b1 b2 loopOnlySP :: SP a a -> SP a b
The loop combinators construct circular connections between stream processors.
loopSP sp
and loopLeftSP sp
can be illustrated as:
loopSP
is an untagged loop combinator. Output from sp
is propagated both to the output and to the loop.
loopLeftSP
is a tagged loop combinator. Output from sp
is
sent to the output of the composition if it is tagged Right
and to
the loop if it is tagged Left
. Similarly, input to sp
is
is tagged Right
if it comes from the input of the composition and
tagged Left
if it comes from the loop.
loopSP (sp1 `serCompSP` sp2)This shows a way to obtain bidirectional communication between two stream processors.