
I don’t know whether there would be any harm in practice to setting the compile-time name based oncurrent-module-declare-name
, but I expect that various tools would have to change to make the value consistently what you expect.

@343519265 I just found this in the docs: “If provided, the wheel-step argument is passed on to the wheel-step method. The default wheel step can be overridden globally though the ’GRacket:wheelStep preference; see Preferences.”

Have you tried various values for wheelStep?


@f.schuindtcs has joined the channel

Macro hygiene. In the same way that a lambda closes over its free variables, a reference to a variable in a macro definition still references the same variable even when the code is moved somewhere else.

Language readers in Racket are not hygienic, only macros. So when read-syntax
produces some syntax, all of the identifiers in it have to be bound, directly or indirectly, by the module language.

Morally, readers just produce s-expressions, though they end up getting wrapped in syntax objects just so that they can have source locations attached. The produced s-expression is then treated the same way as a program you wrote yourself.

But after the reader finishes, then the macroexpander gets to transform the program, and it enforces hygiene.

I think this is, in some respects, a flaw in the way Racket’s language stack works. But it basically means you want to do as much in the expander as you can, and as little in the reader.

@mike.castillo.jr has joined the channel

I feel equal+hash
is too low-level for most usage. I simply want to specify what fields should be counted, but don’t need the ability to fine-control the hash code. Has someone created a package to simplify this already?