A further issue is that SRFI 146 really introduces two types.  With prefixing or renaming, you can load both (srfi 146) and (srfi 146 hash) into the same process, and then you have both mappings and hash mappings, and there is no guarantee whether they are interchangeable or not.  In the (srfi 146 hash) implementation I am writing (which is almost code complete), they are disjoint, but they could be made non-disjoint by modifying the <mapping> record type to have a hash table field.  The SRFI needs to take this possibility into account.

I wonder whether we should actually demand that both mapping types are disjoint. While both mapping types do similar things, they implement different interfaces. With both types not being disjoint, user code would have no way to differentiate between both mapping types although they have to be plugged into different procedures.

--

Marc

 

-- 
John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
This great college [Trinity], of this ancient university [Cambridge],
has seen some strange sights. It has seen Wordsworth drunk and Porson
sober. And here am I, a better poet than Porson, and a better scholar
than Wordsworth, somewhere betwixt and between.  --A.E. Housman