introduce polymorphic synonyms e.g. (List (Pair a b)) can be aliased to (Map a b)