Примеры слов компиляции пользовательского потока управления

Форт классно позволяет пользователям изменять язык, определяя новые слова для потока управления (помимо тех, которые указаны в стандарте: DO, LOOP, BEGIN, UNTIL, WHILE, REPEAT, LEAVE IF, THEN, ELSE, CASE, ENDCASE и т. Д.)

Существуют ли типичные примеры людей, создающих свои собственные новые слова потока управления? Каковы некоторые типичные и полезные примеры? Или стандарт уже определил все, что действительно нужно людям?

Я надеюсь найти примеры полезных расширений языка, которые получили признание или оказались в целом полезными, чтобы сделать язык более выразительным.

2 ответа

Решение

Другим важным направлением структур управления потоками в Форт является возврат. Это очень выразительный и мощный механизм. Для реализации требуется манипулирование обратным адресом [Gas99].

Backtracking в Forth был разработан как расширение BacFORTH MLGassananko в ~1988-1990. Первые статьи на эту тему были на русском языке.

Техника обратного отслеживания позволяет создавать абстрактный итератор и модули фильтров, отвечающие за просмотр наборов всех возможных значений и отклонение "ненужных" [Gas96b].

Для некоторого введения смотрите краткое описание: Backtracking (by mlg), также многопоточность в Forth? Обсуждение в comp.lang.forth может быть полезным (см. сообщения от Гассаненко).

Только один пример генератора в BacFORTH:

: (0-2)=> PRO 3 0 DO I CONT LOOP ; \ generator
: test  (0-2)=>  CR . ." : " (0-2)=>  .  ;
test CR

Выход:

0 : 0 1 2
1 : 0 1 2
2 : 0 1 2

PRO а также CONT являются специальными словами потока управления. PRO обозначает генератор слова и CONT звонит потребителю - это что-то вроде yield в Ruby или ECMAScript. Ряд других специальных слов также определен в BacFORTH. Вы можете играть с BacFORTH в SP-Forth (просто включите ~profit/lib/bac4th.f библиотека).

Этимология

В целом, обратный анализ - это всего лишь алгоритм поиска решений. В Прологе этот алгоритм был встроен под капот, поэтому откат в Прологе - это процесс, как он работает сам. Возврат в BacFORTH - это метод программирования, который поддерживается набором специальных слов потока управления.

Рекомендации

Вот один пример. CASE было несколько позднее добавление к набору слов потока управления Forth. В начале 1980 года в Forth Dimensions был объявлен конкурс на определение лучшего показателя CASE. Это было улажено позже в том же году с галстуком между тремя записями. Один из них оказался в стандарте Forth94.

Другие вопросы по тегам