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


         

с такими словами, как ФОН,


Эти цвета могут использоваться с такими словами, как ФОН, ПЕРО, БОРДЮР:
БЕЛЫЙ ФОН КРАСНЫЙ ПЕРО СИНИЙ БОРДЮР
Однако такое решение требует введения 16-ти имен, многие из которых - сложно-составные. Есть ли путь к упрощению?
Отмечаем, что цвета между 8 и 15 суть "светлые" версии цветов от 0 до 7. (На аппаратном уровне единственным различием между двумя этими наборами является установка бита "интенсивности".) Если мы выделим "светлость", то можем получить такое решение:
VARIABLE 'СВЕТ? ( бит интенсивности?) : ЦВЕТ ( цвет) CREATE , DOES> ( -- цвет ) @ 'СВЕТ? @ OR 0 'СВЕТ? ! ; 0 ЦВЕТ ЧЕРНЫЙ 1 ЦВЕТ СИНИЙ 2 ЦВЕТ ЗЕЛЕНЫЙ 3 ЦВЕТ ЖЕЛТЫЙ 4 ЦВЕТ КРАСНЫЙ 5 ЦВЕТ ФИОЛЕТОВЫЙ 6 ЦВЕТ КОРИЧНЕВЫЙ 7 ЦВЕТ СЕРЫЙ : СВЕТЛО 8 'СВЕТ? ! ;
При таком синтаксисе слово
СИНИЙ
само по себе будет возвращать на стеке "1", а фраза
СВЕТЛО СИНИЙ
будет давать "9". (Приставка-прилагательное СВЕТЛО устанавливает флаг, который используется цветами, а затем очищается.)
При необходимости мы все равно можем определить:
8 ЦВЕТ ТЕМНО-СЕРЫЙ 14 ЦВЕТ ГУСТО-ЖЕЛТЫЙ
И вновь этот подход привел нас к более приятному синтаксису и более короткому объектному коду.
------------------------------------------------------------ СОВЕТ Не расчленяйте ради расчленения. Используйте клише. ------------------------------------------------------------
Фраза
OVER + SWAP
часто наблюдается в определениях. (Она преобразует адрес и счетчик в конечный и начальный адрес для цикла DO LOOP.)
Другая столь же частая фраза - это
1+ SWAP
(Она преобразует последовательность из начала-счета и конца-счета в последовательность конец-отсчета-плюс-один и начало-отсчета, требуемую для цикла DO LOOP.)
Мало проку в выделении этих фраз в слова, такие, как ДИАПАЗОН (RANGE) (для первой фразы).
----------------------------------------------------------------
Мур:
Часто встречающаяся фраза (OVER + SWAP) принадлежит к тому виду фраз, которые находятся на грани представимости их в виде полезных слов.

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