Вкратце распиши, а то гуглить некогда
Вкратце - типы переменных выводятся из выражения, а значит "стековая нотация" в большинстве случаев необязательна! В ОСАML, Haskell и т.д. именно так
Например : AVERAGE + 2 / ; автоматически протипируется как ( int int — int)
просто исходя из типов + и /
Если не баловаться с полиморфизмом на нижнем уровне (а Форт-идеология как раз такая!) - то все просто.
Потом можно и побаловаться - будет куда сложнее (или эквивалент шаблонов или передача неявного аргумента с указателем таблицы операций), зато получится выразительность типизированных функциональных языков реализованная в компактном императивном.
"Стековая нотация" однако полезна - для самодокументирования, усиления контроля компиляции, а также определения локальных переменных.
А ведь мы так даже Хаскель кое в чем уделаем - необязательным окажется указание не только типа, но и имен и даже количества аргументов: все выводится при компиляции.
А на счёт исключений - их реализовывать придётся, полагаю, в любом случае.
При наличии в языке исключений стеко-статичность слов сама по себе не является недостатком, а значит с ней можно спокойно смириться.
Нужен набор модификаторов - public, private, static, final. По умолчанию, полагаю, нужно делать просто private.
С точки зрения отделения интерфейса от реализации а также Форт-идеологии лучше будут словари public, static, final.
Кстати, static можно выкинуть - в Форте между явным и неявным self особой разницы нет.
Как вариант - комиплировать введёную строку в анонимное слово и исполнять потом. Какие могут быть подводные камни?
Куски между определениями компилируются в безымянные слова, которые потом выбрасываются. JIT однако...
На SPF кто-то так получил возможность использовать IF, THEN и т.п. в режиме исполнения.
Даже синтаксис. В приведёном примере двоеточие выглядит уже не в тему... Так и напрашивается "static function str_repeat ..."
А не надо из Форта Яву делать
- Сами понимаете, вселенная-то на моей стороне.
- Вот это мне таким вульгарным и кажется.