3 ms·
I think a lot of the confusion is due to a lack of clear evaluation model for runtime vs compile time code. Racket actually has a clear model for which code is
by slaymaker1907 5y ago
I think a lot of the confusion is due to a lack of clear evaluation model for runtime vs compile time code. Racket actually has a clear model for which code is available at compile vs runtime using phases. While what can be done at compile time is really broad, the message passing between phases is only done through code generation (macros). There are no surprises about what happens at compile time vs runtime. Limiting compile time code to macros enables really powerful tooling for debugging macros since you can step through how each macro gets expanded (with it being common to return more macros through the macro code itself).