repeat statements until bool-expr;
The repeat loop executes the statement sequence statements
until the condition bool-expr evaluates to true.
First statements are executed. Then bool-expr is
evaluated. If it evaluates to true the repeat loop
terminates and the statement immediately following the repeat
loop is executed next. Otherwise if it evaluates to false the
whole process begins again with the execution of the statements.
The difference between the while loop (see While) and the repeat
until loop is that the statements in the repeat until
loop are executed at least once, while the statements in the
while loop are not executed at all if bool-expr is
false at the first iteration.
If bool-expr does not evaluate to true or false
a error is signalled and a break loop (see Break Loops) is entered. As usual
you can leave the break loop with quit;. If you enter return
true;, execution continues with the next statement immediately
following the repeat loop. If you enter return false;,
execution continues at statements, after which the next evaluation
of bool-expr may cause another error.
gap> i := 0;; s := 0;;
gap> repeat
> i := i + 1; s := s + i^2;
> until s > 200;
gap> s;
204 # first sum of the first i squares larger than 200