Как стать автором
Обновить

Комментарии 2

Разве инкапсуляция в ООП появилась не из тех же самых соображений? Скрываем данные (читай значения небезопасного типа), выставляем наружу интерфейс, в классах контролируем инварианты.
Да, все верно! ООП здесь ничему не противоречит.

Мы так же в классе можем добавить дополнительные проверки для значения и ограничить число возможных инвариант предоставляемых типом. Но есть одно но!

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