The goal is similar, but I'm attempting to automatically infer the appropriate map type for any algebraic datatype -- and while I'm at it, the TrieMap package aims to include all the methods Data.Map offers.