Примеры слов компиляции пользовательского потока управления
Форт классно позволяет пользователям изменять язык, определяя новые слова для потока управления (помимо тех, которые указаны в стандарте: 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 - это метод программирования, который поддерживается набором специальных слов потока управления.
Рекомендации
- [Gas96a] М.Л. Гассаненко, Формализация возврата в Форт, 1996 ( зеркало)
- [Gas96b] М.Л. Гассаненко, Расширение возможностей обратного отслеживания, 1996 ( зеркало)
- [Gas99] М.Л. Гассаненко, "Открытый набор слов для переводчиков", 1999 г.
Вот один пример. CASE
было несколько позднее добавление к набору слов потока управления Forth. В начале 1980 года в Forth Dimensions был объявлен конкурс на определение лучшего показателя CASE. Это было улажено позже в том же году с галстуком между тремя записями. Один из них оказался в стандарте Forth94.