Чтение типов факторов и их использование в функциональном программировании я натолкнулся на этот пост. Автор упоминает Data.Set
в качестве примера модуля, который предоставляет тонну функций, которым необходим доступ к внутренним модулям:
Data.Set
имеет 36 функций, когда все, что действительно необходимо для обеспечения значения набора ( "Эти элементы разные" ),toList
иfromList
.
По мнению автора, нам нужно "открыть модуль и сломать абстракцию", если мы забыли некоторую функцию, которая может быть эффективно реализована только с использованием внутренних модулей.
Затем он говорит
Мы могли бы облегчить весь этот беспорядок с типами факторов.
но не дает объяснения этому утверждению.
Итак, мой вопрос: как здесь используются типы факторов?
ИЗМЕНИТЬ
Я провел немного больше исследований и нашел статью "Построение полиморфных программ с типами факторов" . В нем подробно описывается декларирование частных контейнеров и упоминается слово "эффективный" в абстрактном и введении. Но если я не ошибаюсь, это не дает никакого примера эффективного представления "скрываться за" контейнером факторов.
РЕДАКТИРОВАТЬ 2
В "[PDF] Программирование в теории гомотопического типа" статья в главе 3. Тот факт, что тип фактора может быть реализуемый как зависимая сумма. Представлены представления о абстрактных типах (которые очень похожи на классы классов для меня) и предоставлен некоторый соответствующий код Agda. Тем не менее, эта глава посвящена рассуждениям об абстрактных типах, поэтому я не уверен, как это относится к моему вопросу.