using OrderedDicts to represent Haskell Maps