On Sun, Jul 2, 2017 at 4:36 PM, Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:

So, mapping? would return #f on all existing objects and on all possible return values of existing procedures, where "existing" means "existing in the Scheme process before the mapping library was loaded".

Well, that's clear enough, but I don't think it's *strong* enough.  It excludes the possibility that `mapping?` returns #t on a pair, but not the possibility that `pair?` returns #t on a mapping, in case someone were dumb enough to implement a mapping as a raw alist.

Disjointness is complicated.  For example, I've been wondering if SRFI 14 character sets really must be disjoint from SRFI 103 general sets.  They are both linear-update, so that's not a problem, and covariance/contravariance is not an issue either, because there is no overloading in (standard) Scheme.  So loosening the disjointness constraint would just mean that in some implementations, general set operations would work on character sets, and in some implementations they would not, which is in the scope of "it is an error".  The same issue will come up again fairly soon with the forthcoming integer-set SRFI. 

I am still inclined to kick the can down the road for future resolution.

-- 
John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
Statistics don't help a great deal in making important decisions.
Most people have more than the average number of feet, but I'm not about
to start a company selling shoes in threes. --Ross Gardler