Я не уверен, что если использовать Generics is лучший снимок при достижении высокой производительности. Моя лучшая ставка будет на самом деле писать свой собственный экземпляр для Сериализуемый как это:
instance (Serializable a) => Serializable (HashMap a) where
...
Чтобы избежать создания экземпляров бесхозных можно использовать NewType трюк:
newtype SerializableHashMap a = SerializableHashMap { toHashMap :: HashMap a }
instance (Serializable a) => SerializableHashMap a where
...
Вопрос в том, как определить ...
?
Нет определенного ответа, прежде чем вы попытаетесь реализовать и исправить возможные решения.
Одним из возможных решений является использование toList
/fromList
функций и сохранение/считывание размера HashMap
.
Другой (который будет похож на использование Generics) заключается в том, чтобы писать прямую сериализацию на основе внутренней структуры HashMap. Учитывая тот факт, что вы действительно не экспортируете внутренности, это будет работать только для Generics.
В чем проблема с получением Generic? – Cubic
Для получения Generic, для пользовательского типа, мы должны написать что-то вроде: 'Что-то данных = Something Int Int Generic' вытекающих Как это можно сделать, если тип данных в библиотеке на Hackage (кроме представления патч для сопровождающего библиотеки)? – donatello
Хм ...Ну, я лично подозреваю, что Serializing HashMaps вроде бы не сработает, и вам придется использовать другую реализацию, которая поддерживает нужный тип сериализации, но позволяет увидеть, что говорят другие. – Cubic