mflatt
2019-3-30 12:50:43

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.



soegaard2
2019-3-30 18:57:24

@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.”


soegaard2
2019-3-30 18:57:40

Have you tried various values for wheelStep?



f.schuindtcs
2019-3-30 20:50:40

@f.schuindtcs has joined the channel


lexi.lambda
2019-3-31 00:10:02

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.


lexi.lambda
2019-3-31 00:14:56

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.


lexi.lambda
2019-3-31 00:16:14

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.


lexi.lambda
2019-3-31 00:17:06

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


lexi.lambda
2019-3-31 00:18:09

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
2019-3-31 00:39:47

@mike.castillo.jr has joined the channel


sorawee
2019-3-31 06:56:06

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?