# ¤ loopF, loopLeftF, et al

Plumbing: circular connections
## Types

loopF :: F `a` `a` -> F `a` `a`
loopLeftF :: F (`a` ⊕ `b`) (`a` ⊕ `c`) -> F `b` `c`
loopRightF :: F (`a` ⊕ `b`) (`c` ⊕ `b`) -> F `a` `c`
loopThroughRightF :: F (`a` ⊕ `b`) (`c` ⊕ `d`) -> F `c` `a` -> F `b` `d`
loopOnlyF :: F `a` `a` -> F `a` `b`

## Description

These combinators are used to create circular connections between fudgets,
as illustrated in the diagram below.

## Equalities

loopOnlyF f = nullSP >^^=< loopF f

## See Also

Serial and parallel composition: >==<, >+<.
The corresponding stream processor combinators: loopSP et al.

## Bugs

The names are wrong in the diagram. The diagram for
loopThroughRight actually illustrates
loopCompThroughRightF.