[r6rs-discuss] [Formal] Equivalence predicate version of memp

From: Andre van Tonder <andre>
Date: Thu Sep 28 14:53:23 2006

William Clinger wrote:

> There are at least four differences between forall and
> exists in the draft R6RS and every and any in SRFI-1:
>
> 1. The draft R6RS says the proc must take a single
> argument when the lists are nonempty. I hope this is
> an error in the draft R6RS; the proc should take as
> many arguments as there are lists.
>
> 2. The draft R6RS does not specify the behavior of
> forall when the proc returns true values other than #t.
> I hope this is an error in the draft R6RS; all true
> values should be treated the same.
>
> 3. SRFI-1 allows the list arguments to have different
> lengths. So far as I can tell, the draft R6RS neither
> allows that nor forbids it. I fear this was an oversight
> in the draft R6RS.

This kind of ambiguity could be easily fixed by specifying these
procedures via exhibiting a correct reference implementation
with (or even instead of much of) the prose description.
Since the length of the simplest correct implementation is
mostly very short, the increase in spec length, if any,
would likely be modest.

There is in fact another, more compelling, reason for doing
just this. The current specification of various of the list
procedures is ambiguous in the presence of call/cc. This
is the subject of a formal comment I just submitted.

Specifying these procedures via implementation would fix
these call/cc ambiguities, ambiguities in the prose, and perhaps
some other possibly unknown ambiguities (exceptions come to mind).
Any concomitant increase in spec length would therefore be well
worth it.

Regards
Andre
Received on Thu Sep 28 2006 - 14:52:39 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC