[я там отредактировал сообщение, добавив еще немного текста]
M>>Сколько условий «Непроверенный как написано в энном пункте» предлагаешь впихивать в тип? K>Для начала в конструктор значения этого типа. K>Проектируя тип "Заказ", Вы просто описываете вашу спецификацию как конструкторы. Если в спецификации противоречия, вы даже можете их на этом этапе обнаружить. А потом тайпчекер уже заботится о том, что вы все проверяете по спецификации.
Можно больше конкретики? Я согласен на примеры кода.
M>>Ты перенес все эти четыре десятка условий в типы, молодца. Как ты собираешься проверять, что ты эти условия описал в типах логически правильно? K>Проще искать ошибки с трансляцией спецификации в тип в одном месте, чем с ее выполнением в 1024-х местах в коде.