On Thu, Nov 11, 2021 at 9:20 PM Yushuo Xiao <[email protected]> wrote:
> Thank you very much! I didn't know the set is not fixed. And thinking of > them as an IR really helps. > > On Friday, November 12, 2021 at 12:15:39 AM UTC+8 johnbclements wrote: > >> That’s a true statement… but that set is by no means fixed. >> > To nitpick a little, while it's true that the set of forms allowed in fully expanded programs is not fixed, the last change was in Racket 6.3, adding `(quote-syntax datum #:local)` and removing `letrec-syntaxes+values`: https://docs.racket-lang.org/reference/syntax-model.html#%28part._fully-expanded%29 So, while not fixed, they are in fact quite stable, and the list of identifiers is exposed through APIs like the `kernel-literals` <https://docs.racket-lang.org/syntax/Library_Syntax_Classes_and_Literal_Sets.html#%28form._%28%28lib._syntax%2Fparse..rkt%29._kernel-literals%29%29> literal set for `syntax-parse` and, at a lower level, `kernel-form-identifier-list` <https://docs.racket-lang.org/syntax/syntax-helpers.html#%28def._%28%28lib._syntax%2Fkerncase..rkt%29._kernel-form-identifier-list%29%29> and the `syntax/kerncase` <https://docs.racket-lang.org/syntax/syntax-helpers.html#%28mod-path._syntax%2Fkerncase%29> module. Authors of advanced macros that use `local-expand` and friends need a general awareness of their shapes, e.g. to recognize definitions, splice `begin`s, or recur into local binding forms, so changes have to be unobtrusive to avoid breaking compatibility. If you're interested in the low-level internals of Racket, you may also want to read the manual section on Linklets and the Core Compiler <https://docs.racket-lang.org/reference/linklets.html>. -Philip -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/0100017d121a0121-031c9bd8-10ec-45b2-84b3-91c93d4e19bc-000000%40email.amazonses.com.

