zespri>Это интересно. Это сужает немного привычное (для меня) понимание оверлоадинга, но это будет работать. Хочу поблагодарить за очень дельные ответы. Ответ на вопрос "в чём суть форта" особенно понравился - был очень в точку.
Просто этой проблемой я занимался когда пытался Форт на Win95 реализовать. И для упрощения написания программ, естественно, реализовывал и всякие автоматические строки, и объекты писать

Годы прошли, но мысли-то остались.
zespri>Теперь про контекстные словари. Я к сожалению не знаком с концепцией использования различных словарей для реализации оверлоадов
Я такой реализацией не занимался, так что только общие мысли.
Работу сильно облегчает то, что компилятор в Форте не занимается забеганием вперёд. Слова разбираются последовательно, одно за другим. Т.е. можно реализовать такую систему, когда каждый конструктор класса (он всё равно будет IMMEDIATE) автоматически переключает контекст словаря и идущие за ним слова будут браться уже для работы с этим типом. Каждое слово, если возвращает объект фиксированного типа, тоже переключает словарь на этот тип. Если тип неизвестен - то общий словарь, где слова уже занимаются RTTI. При чём это скорее не полные слова (зачем нам иметь два набора кода - RTTI-шный и обычный?), а заглушки на вызов слов уже конкретного типа.
zespri>Каждый из таких словарей, он содержит (грубо говоря) все слова с данным набором аргументов?
Тех, работа которых зависит от конкретных типов - да.
Если же нет (само слово от типов не зависит, а вызывает только другие) - то достаточно "общего" слова.
zespri>И когда появляется новый слово с набором аргументов для которого словаря пока нет, этот словарь создаётся и оно туда заносится, так?
Нет, словари делаются по типам. Создаём новый тип - создаётся и новый словарь для его слов.
zespri>Если же смотреть тип только верхнего элемента стека, то всё проще, по словарю на тип.
Да, именно так. А следующие аргументы будут аналдизировать уже слова, находящиеся внутри нашего слова.
zespri>А что происходит во время исполения? Кто переключает контекст словаря? Сам форт?
Нет, это всё выполняется на этапе компиляции. При исполнении Форт словарями никак не рулит.
Но при исполнении те слова, тип которых определить не удалось, можно вызывать уже по таблицам, как было упомянуто ранее.
Вообще, базу "табличного RTTI" можно посмотреть на примерах в
Язык программирования Forth
Только учти, что библиотека пятилетней давности и я ей с того времени так и не занимался. И ни одного практического решения на ней не сделал

Как раз в то время ушёл на Perl.
zespri>То есть во время компиляции мы знаем тип значения. Когда и как мы переключаем словарь?
Если можно - при компиляции. Нет - при исполнении, но это уже будет не переключение словаря, а прямой вызов слова нужного типа.