On 20 Oct 2025, at 19:08, Sergei Egorov <xxxxxx@acm.org> wrote: > The scope is not unspecified, it is specified operationally, by imposing constraints that should hold for a program to have a defined semantics. Not a new thing for Scheme: this is the approach taken by R6RS/R7RS editors with respect to define-syntax in bodies. This seems to be a rather deep misunderstanding. In my example, (match procedure? ((~and thing (~? thing)) 'early-binding) (_ 'should-never-happen)), your proposed spec language makes the binding of ‘thing’ in the evaluation of the expression in (~? thing) unspecified. If a binding is unspecified, the scoping rules are unspecified. (Worse than unspecified, because there is no obligation for an implementation to do one of the ‘obvious’ things when something is specified as UB. If it were merely unspecified, it would at least be safe.) There is no case in R6RS which is unspecified in this way. In R7RS small, there is no real comparable case, only that of syntactic use-before-definition within a body, which is unspecified, but use after definition, which this example lexically is, is perfectly well specified. (Though I note your ~and doesn’t guarantee left-to-right order nor by extension short circuiting.) The situation in the draft R7RS large is the same as in R6RS. Daphne