On Tue, Nov 9, 2021 at 2:46 AM Marc Nieper-Wißkirchen <xxxxxx@gmail.com> wrote:
 
I don't think so. The following is allowed by R7RS: (eq? (lambda (x) x) (lambda (x) x)) => #t.

You're right. What I should have said is that (let ((f (lambda (x) x))) (eq? x x) must be #t in R7RS, whereas it can be either #t or #f in R6RS.

It's not guaranteed by R6RS and won't be true in general.  For example, an R6RS implementation of SRFI 1 could implement `xcons' for efficiency reasons as follows:

You could, and when someone does, I'll be happy to retract that.  Similarly, when someone implements (set! x 0) to return zero or two values, I'll be happy to retract my claim that in practice R6RS procedures that are defined to return unspecified values in practice return exactly one value.