Я использую Data.Binary для сериализации данных в файлах. В моем приложении я постепенно добавляю элементы в эти файлы. Два самых популярных пакета сериализации, двоичные и зерновые, обе сериализуют списки как счетчики, за которыми следуют элементы списка. Из-за этого я не могу добавить свои сериализованные файлы. В настоящее время я читаю весь файл, десериализую список, добавляю в список, повторно сериализую список и записываю его обратно в файл. Однако мой набор данных становится большим, и у меня заканчивается память. Я мог бы, вероятно, разобраться в распаковке своих структур данных, чтобы получить некоторое пространство, но этот подход не масштабируется.
Одним из решений было бы спуститься и испортить формат файла, чтобы изменить начальный счет, а затем просто добавить мои элементы. Но это не очень удовлетворительно, не говоря уже о том, чтобы быть чувствительным к будущим изменениям в формате файла в результате нарушения абстракции. Iteratees/Enumerators приходят на ум как привлекательный вариант здесь. Я искал библиотеку, объединяющую их с двоичной сериализацией, но ничего не нашел. Кто-нибудь знает, если это уже сделано? Если нет, будет ли библиотека для этого полезной? Или я что-то упускаю?