: 5INV ( A,B,C,D,E -> E,D,C,B,A) 5 LOC !1 !2 !3 !4 !5 @1 @2 @3 @4 @5 UNLOC ;
Приведенная реализация локальных переменных предельно упрощена. Ее очевидным усовершенствованием является, например, введение контроля за переполнением и исчерпанием локального стека и включение действий LOC и UNLOC в семантику входа в высокоуровневое определение и выхода из него; при этом подсчет числа локальных объектов может выполняться автоматически, аналогично определению адреса перехода в структурах управления.
Можно пойти еще дальше и вместо прямой нумерации локальных объектов ввести их настоящее описание через соответствующее слово внутри определения через двоеточие с автоматическим переносом входных параметров на локальный стек при входе в такое определение. Словарная статья для имени локального объекта, которая строится по такому описанию, должна располагаться несколько выше текущей вершины словаря и иметь признак немедленного исполнения. Ее действие состоит в компиляции обращения к соответствующему элементу локального стека. По завершении компиляции данного определения все такие временные статьи автоматически исключаются из словаря.
Введение локальных переменных не только упрощает программирование, освобождая программиста от необходимости тщательно отслеживать все изменения на стеке, но и сокращает размер скомпилированной программы, поскольку из нее исчезают сложные последовательности из слов OVER, DUP, ROT, PICK и других, обычно используемых для доступа к локальным значениям.Такое неожиданное сочетание приятного с полезным — одна из многих удивительных сторон языка Форт, которые открываются программисту при знакомстве с ним.