[Haskell-cafe] Data structure to manage collection of sets with efficient lookup, intersection?