Интересное чтение.
Кнут убедительно показывает, что цикл вида
## Код:
```
loop
  …
  exit when (exit-cond)
  …
end loop
```
является вполне корректной, фундаментальной конструкцией. Борьба с ним приведением к циклуwhileлишена смысла.
Кнут приводит удачный синтаксис для записи таких циклов. Его предложил О.Дал:## Код:
```
loop: S; while ~B: T; repeat;
```
(в точке while происходит выход).
Эта конструкция покрывает и граничные случаи – циклыwhileиrepeat, которые становятся ненужными.

Имеется простая аксиоматизация:
> -- Цитата:
> Пусть: {P}S{Q} {Q & B}T{P}Тогда: {P} loop: S; while B : T; repeat; {Q & ~B } (стр. 49)Жалко, что раньше не было возможности ознакомиться с этой работой Кнута.