Есть HsJudy , который, похоже, хорошо приспособлен для разреженных наборов ключей.
Связи Джуди (библиотека C, которая реализует быстрые разреженные динамические массивы) для Haskell, представляющего API, максимально соответствующие существующим интерфейсам библиотеки Haskell, таким как Data.Map и Data.Array.MArray. Эта привязка для библиотеки Judy включает в себя все ее четыре типа: отображение из слов в биты (Judy1), из слов в значения (JudyL), из строк в значения (JudyHS) и из массива байтов в значения (JudyHS).
Но я бы, вероятно, пошел с Data.Map.Map (Int, Int) MyClass
, пока не столкнулся с проблемами масштабируемости или удобства использования.