Separating dictint objects from the dictionary instance is interesting idea.  Gauche has generic dictionary interface
but it is based on the type of dictionary instances, hence can't handle alist/plists.

I have some comments but shall we have separate place to discuss it, for it's not about srfi-177?


On Mon, Nov 25, 2019 at 9:15 AM John Cowan <xxxxxx@ccil.org> wrote:
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).

If anyone is interested, please review <https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/DictionaryInterfaces.md>.  Thanks.