Подчистил методы определения типа в объектах и причесал код.

Разнести классы по файлам более аккуратно.
Избавиться от type_id.
Создать базовые макросы.
Создал описание базовых макросов, поменял эвалуацию пары.
Исправил применение функции с оптимизацией while на случай возврата
макроса

Перестроить классы специальных типов.
Адаптировать под изменения тестовый парсер.
Создал базовый код для типа Integer.

Сделать то же самое над Float.
Подумать над тем, как можно расширять систему типов, не трогая базовый
код.
Проблемой являются функции as и is. А dynamic_cast не хочется доверять
всё.
Добавил шаблон для операций сравнения для Integer.

Теперь для Float можно сразу скопировать, но мне повтор кода такой не
нравится.
Добавлено всё для Float. Описаны константы для числовых функций.

Подготовить парсер для запуска и тестирования базовых и числовых
функций.
Парсер адаптирован под новое. Код причёсан, чтобы собиралось.

Вылазиет одна ошибка компиляции, с которой я не знаю, что делать.
Убрать её!
Запустить парсер, погонять тесты, написать тесты (отдельные ветви).
Убрал последние ошибки, проект собирается, причесал код.

Запустить и отдебажить.
Вставлены отладочные сообщения, запускается, вычисляется.

Тестировать логику языка. Написать тесты.
Подумать для ленивых вычислений и рекурсии.
Добавить операции работы с контекстами.