A WHILE-DO construction is a construction that will perform zero or more iterations. First a condition is checked, then the body is executed. Then it will branch back to the condition. In 4tH it looks like this:
BEGIN <condition> WHILE <body> REPEAT
The condition will have to evaluate to TRUE in order to execute the body. If it evaluates to FALSE it branches to just after the REPEAT. This example does a Fibbonaci test.
: fib 0 1 begin dup >r rot dup r> > \ condition while rot rot dup rot + dup . \ body repeat drop drop drop ; \ after loop is executed
You might not understand all of the commands, but we'll get to that. If you enter "20 fib" you will get:
1 2 3 5 8 13 21
This construct is particularly handy if you are not sure that all data will pass the condition.