This functionality does not run in MATLAB.
repeat body until condition end_repeat _repeat(body, condition)
repeat - end_repeat is a loop that evaluates its body until a specified stopping criterion is satisfied.
In a repeat loop, first body and then condition are evaluated until condition evaluates to TRUE.
In contrast to the while loop, the body of a repeat loop is always evaluated at least once.
The body may consist of any number of statements which must be separated either by a colon : or a semicolon ;. Only the last evaluated result inside the body (the return value of the loop) is printed on the screen. Use print to see intermediate results.
The keyword end_repeat may be replaced by the keyword end.
The imperative form repeat - end_repeat is equivalent to corresponding call of the function _repeat. In most cases, the imperative form should be preferred because it leads to simpler code.
The $-operator is often a more elegant notation for loops.
_repeat is a function of the system kernel.
Intermediate results of statements within a repeat and while loop are not printed to the screen:
i := 1: s := 0: while i < 3 do s := s + i; i := i + 1; end_while
Above, only the return value of the loop is displayed. Use print to see intermediate results:
i := 1: s := 0: while i < 3 do print("intermediate sum" = s); s := s + i; i := i + 1; s end_while
delete i, s:
A simple example is given, how a repeat loop can be expressed via an equivalent while loop. For other examples, this may be more complicated and additional initializations of variables may be needed:
i := 1: repeat print(i); i := i + 1; until i = 3 end:
i := 1: while i < 3 do print(i); i := i + 1; end:
condition := UNKNOWN: while not condition do print(Condition = condition); condition := TRUE; end_while:
Error: The Boolean 'TRUE' or 'FALSE' is expected. [while]
To avoid this error, change the stopping criterion to condition <> TRUE:
condition := UNKNOWN: while condition <> TRUE do print(Condition = condition); condition := TRUE; end_while:
We demonstrate the correspondence between the functional and the imperative form of the repeat and while loop, respectively:
hold(_repeat((statement1; statement2), condition))
repeat statement1; statement2 until condition end_repeat
hold(_while(condition, (statement1; statement2)))
while condition do statement1; statement2 end_while
The body of the loop: an arbitrary sequence of statements
Value of the last command executed in the body of the loop. If no command was executed, the value NIL is returned. If the body of a while loop is not evaluated due to a false condition, the void object of type DOM_NULL is returned.