Невозврат, по сути GOTO в ранее определённое слово. Получилось так:
Код:
: A R> DROP ." slovo A" ;
: B A ." slovo B" ;
B
результат:
> slovo A
Может быть есть примитив заменяющий R> DROP, типа DROPR ? Конечно можно написать, но вдруг есть уже стандарт?
Cсылка вперёд. Классика рекомендует:
Код:
VARIABLE *B
: A *B @ EXECUTE ;
: B ." slovo B" ; ' B *B !
A
результат:
> slovo B
Как-то неуклюже. Может есть спецсредства?
Всё вместе, бесконечный цикл без переполнения стеков вроде бы получился (A вызывает B, B вызывает A):
Код:
0 VALUE *B
: A R> DROP ." A" *B EXECUTE ;
: B R> DROP ." B" A ; ' B TO *B
A (или B)
результат:
печатает AB (или ВА) бесконечно.
В общем, как бы всё это более изящно..
Для чего нужно: соответствие блок-схемам типа "ДРАКОН". Здесь слово из которого не возвращаются есть "ветвь". Ссылка вперёд - переход на другую ветвь. Всё вместе - "веточный цикл".