Я сопровождаю пакет по взлому lrucache . Недавно я получил запрос на добавление экземпляров для Binary
и NFData
. Обе эти вещи полезны, и в принципе у меня нет проблем с этими случаями.
Тем не менее, оба они вводят новые зависимости пакетов, и я хочу сохранить список зависимостей моего пакета как можно меньше. Есть ли разумный способ справиться с этим? Вероятно, существует более двадцати различных пакетов, которые предоставляют полезные классы типов, которые структуры данных в lrucache
могут реализовать, и получают некоторую выгоду.
Очевидно, что добавление всех из них в качестве зависимостей не является началом. Но что еще можно сделать?
Я могу добавить флаги в lrucache.cabal, которые позволят компилировать различные экземпляры. Это работает с точки зрения минимизации списка зависимостей, за исключением случаев, когда вы этого хотите. Но это ужасно в реальном мире, потому что вы не можете указать флаги сборки в секциях, зависящих от сборки. Таким образом, вы можете зависеть от пакета с определенным флагом, но не указывать эту зависимость. Это быстро сводится к почти бесполезной.
Я могу создать несколько пакетов экземпляров-сирот. Это имеет то преимущество, что позволяет указывать зависимости от этих экземпляров в разделе, зависящем от сборки. Его основным недостатком является добавление тонны дополнительных пакетов для взлома и необходимость поддерживать их как отдельные пакеты.
Что еще я могу сделать? Что нужно сделать?