Руководствуясь принципами диалектического материализма необходимо признать, что не существует типов вообще. Если один из типов существует фактически в качестве типа процессора или ВМ -- именно он должен являться базовым по отношению ко всем обобщённым типам.
Базовым типом ВМ будет знаковое целое. Беззнаковое целое в качестве базового типа является идеалистическим отражением наличного бытия. Беззнаковое целое, литера и булево значение будем считать производными значениями от целого.
Таким образом провозглашён онтологический принцип:
Целое как первооснова информационной материи,
как атомарная форма количества,
как единица измерения бытия в мире вычислений.
Это — не компромисс, не инженерная хитрость в духе ad hoc, а революционный шаг в построении онтологии prolet, где сложное выводится из простого, а многообразие — из единого и реально существующего.
Разберём это решение в свете диалектического материализма.
количество — первая форма бытияЦелое — минимальная форма количества, способная отражать объективные состояния:
Оно — не абстракция, а отражение закона измерения в природе.
Потому что реальный мир — не только "больше нуля".
−1.Беззнаковое — идеализм, оно отрицает возможность отрицания, а диалектика — основана на отрицании.
Знаковое целое — единство положительного и отрицательного, оно носит в себе внутреннее противоречие, и потому — диалектически полно.
В prolet отказ от "независимых" типов носит методический характер.
Вместо куста чудесным образом возникающих типов — все типы порождаются от целого, но не механически, а через ограничение и интерпретацию.
целое (перечисление [0, не 0])
целое (интерпретация Юникода, диапазон [0x00, 0x10FFFF])
целое (диапазон [0, +∞)) — как ограничение, а не отдельный тип
Это — не упрощение, это — развитие через снятие противоречия:
(тип Яблоки : Целое)
Целое не определяется через что-то более простое. Является аксиомой онтологии.
Все операции (+, -, *, >>, &) — определены на нём напрямую.
(тип Булево : Целое
@перечисл [Ложь, Истина]
@интерпретация (0 → Ложь, не 0 → Истина)
Использование:
((Бул 5) -> @фикс еслиВкл)( // значение Истина)
(если еслиВкл
тогда (Напечатать "ВКЛ"))
При этом:
(тип Литера : Целое
@диапазон [0, 0x10FFFF]
@интерпретация Юникод
@литералы ('a' → 97, 'я' → 1071))
((Лит 'А') -> @фикс литА)(// литра с кодом 1040)
Литера — не "отдельный тип", а целое, наделённое смыслом через стандарт.
(тип Абс (// Абсолютное значение целого)
@диапазон (0, ЦелМакс)(// проверяется на этапе компиляции или рантайме)
)
Или — через валидатор:
(фн Беззнаковый (имя Битность) -> @фикс Результат.Бул
(ПроверитьБезЗнак имя))
(Беззнаковый U32)(// Проверяет беззнаковое число в рантайме
Беззнаковое — не база, а производная категория, возникающая в практике индексации, адресации, счётчиков.
Новые типы — не добавляются, а выводятся из целого через практику
Программист не думает: "это int или uint?", а думает: "это счётчик, значит — неотрицательное"
i = -1; for (i < n; ...) — обнаруживаются не по типу, а по нарушению контракта (@диапазон [0, ∞)).i помечена как беззнаковая, но присваивается -1. Это противоречит контракту."Это — не бюрократия, это — диалектическое воспитание сознания.
Целое — не конец пути, а начало познания.
x = 42
Ограничение: x : [0, 100]
x как возраст, код ошибки, символ@возможно ПользовательЦелое становится частью сложного процесса
Целое — не "вещь", оно — форма движения материи в пространстве значений.
Приведённое решение — не просто техническое, оно — философское, революционное, диалектически зрелое.
Целое — это не тип,
Все прочие типы — не равноправны,