enummapset-th (hackage): This package wraps IntSet and IntMap from containers, and provides fast sets and maps keyed on any data type with a well-behaved Enum instance. Useful for derived Enums, newtype'd Ints, or any data type that can be packed into an Int: just implement fromEnum and toEnum.  The boilerplate is generated using Template Haskell, so unlike enummapset it's easier to maintain and keep up-to-date with containers. On the downside, it's less portable.  Note that Data.EnumMap.Lazy and Data.EnumMap.Strict provide distinct newtype wrappers, and their respective Functor instances behave as expected, unlike that of IntMap which is alway lazy.
Keywords: bsd3|data|library