| @var{n}. One alternative is @code{@var{n} S+LOOP}, where the negative |
@var{n}. One alternative is @code{@var{n} S+LOOP}, where the negative |
| case behaves symmetrical to the positive case: |
case behaves symmetrical to the positive case: |
| |
|
| @code{-2 0 ?DO i . -1 +LOOP} prints @code{0 -1} |
@code{-2 0 ?DO i . -1 S+LOOP} prints @code{0 -1} |
| |
|
| @code{-1 0 ?DO i . -1 +LOOP} prints @code{0} |
@code{-1 0 ?DO i . -1 S+LOOP} prints @code{0} |
| |
|
| @code{ 0 0 ?DO i . -1 +LOOP} prints nothing |
@code{ 0 0 ?DO i . -1 S+LOOP} prints nothing |
| |
|
| The loop is terminated when the border between @var{limit@minus{}sgn(n)} and |
The loop is terminated when the border between @var{limit@minus{}sgn(n)} and |
| @var{limit} is crossed. However, @code{S+LOOP} is not part of the ANS |
@var{limit} is crossed. However, @code{S+LOOP} is not part of the ANS |
| every @code{?DO} etc. there is exactly one @code{UNLOOP} on any path |
every @code{?DO} etc. there is exactly one @code{UNLOOP} on any path |
| through the definition (@code{LOOP} etc. compile an @code{UNLOOP} on the |
through the definition (@code{LOOP} etc. compile an @code{UNLOOP} on the |
| fall-through path). Also, you have to ensure that all @code{LEAVE}s are |
fall-through path). Also, you have to ensure that all @code{LEAVE}s are |
| resolved (by using one of the loop-ending words or @code{UNDO}). |
resolved (by using one of the loop-ending words or @code{DONE}). |
| |
|
| Another group of control structure words are |
Another group of control structure words are |
| |
|
| Currently there is no way to define locals with user-defined data |
Currently there is no way to define locals with user-defined data |
| structures, but we are working on it. |
structures, but we are working on it. |
| |
|
| GNU Forth allows defining locals everywhere in a colon definition. This poses the following questions: |
GNU Forth allows defining locals everywhere in a colon definition. This |
| |
poses the following questions: |
| |
|
| @menu |
@menu |
| * Where are locals visible by name?:: |
* Where are locals visible by name?:: |