When thinking about alists and plists as alternatives to keywords, I came up with the idea of a reified typeclass similar to comparators that could be passed to a procedure so that it could make use of a dictionary (alist, plist, hash table, mapping, hashmap, or potentially something else) without knowing its actual type. It needs 8 procedures (twice as many as a comparator) at minimum, but if you have more efficient implementations of any of the 30+ dict-* procedures, it can make use of them. All mutators are linear-update (currently hashtables and plists are actually mutated, the others are not).