скрывать внутреннюю реализацию какого-то типа? Зачем статически проверять типы?
Можно пойти от противного. Вот у тебя есть MapSet и t:MapSet.t/1. Ты хочешь написать функцию, которая берёт MapSet и возвращает количество элементов в нём. Ты хочешь, чтобы если пользователь туда передаст вместо MapSet значение другого типа, чтобы диалайзер заругался. @opaque у тебя нет, раскрывать пользователю внутреннюю реализацию ты не хочешь. Твои действия?
> раскрывать пользователю внутреннюю реализацию ты не хочешь Вот это непонятно. Почему я должен это не хотеть.
Обсуждают сегодня