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.

--
Alex