LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

ну в общем то что ты описываешь похоже есть в хаскеле: запрещаешь экспорт консруктора типов из модуля и експортируешь только функции умеющие из грязных типов создавать чистые. Сами грязные от чистых отличаешь с помощью фантомных типов. Сами типы можно ограничивать как угодоно, называй его например Int101_143 и экспортируй конструктор который создаёт такой тип.

Причём всё это существует только в компил тайме, никаких накладных расходов в рантайме.

hateyoufeel

Исходная версия AndreyKl, :

ну в общем то что ты описываешь похоже есть в хаскеле: запрещаешь экспорт консруктора типов из модуля и експортируешь только функции умеющие из грязных типов создавать чистые. Сами грязные от чистых отличаешь с помощью фантомных типов. Сами типы можно ограничивать как угодоно, называй его например Int101_143 и экспортируй конструктор который создаёт такой тип.

Причём всё это существует только в компил тайме, никаких накладных расходов в рантайме.