The
loop operator expresses computations in which an output
value is fed back as input, although the computation occurs only once.
It underlies the
rec value recursion construct in arrow
notation.
loop should satisfy the following laws:
where
assoc ((a,b),c) = (a,(b,c))
unassoc (a,(b,c)) = ((a,b),c)