LINUX.ORG.RU
Внимание! Перед написанием комментария ознакомьтесь с правилами сайта.


Почитайте вот это и прослезитесь: http://www.forth.org.ru/~cactus/files/brodie.rar :)

> Возьмем к примеру простую задачу: каждый день к обеду нужны батон и пакет кефира (Шурик, мы тебя не забудем!). В императивном стиле мы пишем алгоритм для того чтобы выйти с работы (встать, повернутся на 180о, пройти 15 шагов, повернуться на 270о, открыть дверь,...), купить батон, купить кефир, вернутся на работу. Все работает отлично, пока ничего не меняется. Но пускай батон у нас уже есть и нам нужен только кефир - но алгоритмом ето не предусмотрено. Или мы уже стоим в магазине - тогда нам нужно вернутся в исходное положение, на работу, иначе алгоритм не сработает. Или нам нужно купить батон и ити домой - тогда нам полностю нужен новый алгоритм.

переменная батон
переменная кефир
очередь продукты
очередь в-наличии
очередь потребности
очередь маршрут
место откуда
место куда
место где-я-был
место магазин
место работа
место рабочий-стол
место домой
граф местность

: тогда if ; ( условно, без учёта immediate )
: иначе else ;
: далее then ;
: правда true ;
: ложь false ;
: нет not ;
: и and ;
: или or ;
: условие begin ;
: повторять while ;
: достаточно repeat ;

: где-я-сейчас местность проанализировать ;
( а можно запоминать перемещения и координаты )

: запомнить добавить-в-очередь ;

батон продукты запомнить
кефир продукты запомнить

: ничего-не-надо потребности очистить-очередь ;
: ничего-нет в-наличии очистить-очередь ;
: нужен потребности запомнить ;
: проверить разница-очередей ;
: что-то-нужно? продукты в-наличии проверить потребности запомнить ;
: сходить-в-магазин? потребности пуста-ли-очередь? ;

: место-достигнуто? откуда куда место-сравнить ;
: отсюда откуда место-запомнить ;
: туда куда место-запомнить ;
: поиск-куда ... ;
: найти-куда-идти условие место-достигнуто? нет? повторять откуда куда поиск-куда dup отсюда маршрут запомнить достаточно ; ( куда откуда -- )
: проложить-маршрут туда где-я-сейчас отсюда найти-куда-идти ; ( место1 место2 -- )
: пройти маршрут извлечь-из-очереди двигаться ; ( очередь -- )
: идти где-я-сейчас проложить-маршрут маршрут пройти ; ( место -- )

: сходить-в-магазин сходить-в-магазин? тогда магазин идти потребности купить далее ;
: на-работу работа идти ;
: накрыть-на-стол что-то-нужно? сходить-в-магазин на-работу продукты рабочий-стол выложить ;
: обед накрыть-на-стол кушать ;

батон в-наличии запомнить
обед

ничего-нет ничего-не-надо
батон нужен сходить-в-магазин домой идти

---
После двоеточия имя функции (ограничено пробелами), далее тело, заканчивается точкой-с-запятой. Вызов функции ограничен пробелами.

Писалось на скорую руку (сильно не пинайте :). Проблемный язык. Итерактивный. Желательно, ещё упростить, перемещения неудачные.

P.S. Только жаль, что сложноват Forth "для леммингов". :)

:-)

anonymous
()
нельзя добавлять в устаревшие темы
Сообщение уже устарело
Ограничение на отправку комментариев: только для зарегистрированных пользователей

Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария