Способ мышления-Форт



Глава 7. Работа с данными: стеки и состояния - часть 23


Традиционная технология введения векторизованного исполнения описана в "Начальном курсе...", в главе 9. В этом разделе мы обсудим придуманный мною новый синтаксис, который, мне кажется, может быть использован во многих случаях более элегантно, чем традиционные методы. Этот синтаксис называется DOER/MAKE. (Если в Вашей системе отсутствют такие слова, обратитесь к приложению Б, где приведены детали их реализации и кода.) Работает это так: Вы определяете слово, поведение которого будет веторизовываться, с помощью определяющего слова DOER, например:

DOER ПЛАТФОРМА

Вначале новое слово ПЛАТФОРМА ничего не делает. Затем Вы можете написать слова, которые изменяют то, что делает ПЛАТФОРМА, используя слово MAKE:

: ЛЕВОЕ-КРЫЛО MAKE ПЛАТФОРМА ." сторонник " ; : ПРАВОЕ-КРЫЛО MAKE ПЛАТФОРМА ." противник " ;

Когда вызывается ЛЕВОЕ-КРЫЛО, фраза MAKE ПЛАТФОРМА изменяет то, что должна делать платформа. Теперь, если Вы вводите ПЛАТФОРМА, то получаете:

ЛЕВОЕ-КРЫЛО ok ~~~ ПЛАТФОРМА сторонник ok ~~~~~~~~~~~~~ ПРАВОЕ-КРЫЛО заставит слово ПЛАТФОРМА печатать "противник". Можно использовать платформу и внутри другого определения:

: ЛОЗУНГ ." Наш кандидат - последовательный " ПЛАТФОРМА ." больших дотаций для промышленности. " ;

Выражение

ЛЕВОЕ-КРЫЛО ЛОЗУНГ - 229 -

будет отражать направление одной предвыборной компании, в то время, как

ПРАВОЕ-КРЫЛО ЛОЗУНГ

будет отражать второе направление. Код "MAKE"-слова может содержать любые Форт-конструкции, по желанию сколь угодно длинные; следует только помнить о необходимости заканчивать его точкой с запятой. Эта последняя служит в конце левого-крыла не только этому крылу, но и части кода после слова MAKE. Когда слово MAKE перенаправляет слово-DOER, оно одновременно `останавливает` исполнение того определения, в котором само находится. Когда, к примеру, Вы вызываете ЛЕВОЕ-КРЫЛО, MAKE перенаправляет слово ПЛАТФОРМА и завершает исполнение. Вызов левого-крыла на приводит к распечатке "сторонника".


Содержание  Назад  Вперед