Am Fr., 28. Aug. 2020 um 07:35 Uhr schrieb Alex Shinn <xxxxxx@gmail.com>:
On Thu, Aug 27, 2020 at 4:35 PM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
Am Do., 27. Aug. 2020 um 04:14 Uhr schrieb Alex Shinn <xxxxxx@gmail.com>:

The current state is that, per R7RS, any cyclic literals must be directly quoted,
which means match-letrec can support them.  The idea of cycles in indirectly
quoted data, via other macros, is disallowed by the standard, with quasiquote
given as a specific example.  So I guess we can leave the cycles as is.

(let-syntax
    ((q
      (syntax-rules ()
        ((_ x) (quote x)))))
  (q #0=(#0#)))

is allowed by my reading of R7RS and is logically sound. Circular references are allowed only in literals but whether a certain datum in the input is a literal can only be detected after macro expansion. The example of quasiquote doesn't apply because quasiquote does not need to expand into quote.

I would say this is a grey area.  quasiquote is just a macro which expands into quoted forms.
At the time as an editor my intent was to only allow a directly quoted cycle, not indirectly, and
quasiquote was just cited as one example of such an indirect case.

Quasiquote wouldn't have been a good example because it doesn't have to be an indirect use of quote. Besides, the restriction you had in mind doesn't make much sense logically given the existence of derived forms and macros.

Whatsoever, unquoted cyclic vector literals are definitely allowed by the language. And there is no way to detect these by a syntax-rules scanner.