Hello everyone, I work on Hacker News[1], which is written in Arc[2], and am tasked with making it faster. The Arc compiler targets Racket[3], but doesn't do so in such a way that function names or source locations are preserved. This makes output from the sampling profiler and error messages mostly useless.
I'd like to make Arc work as a Racket language (and in the process preserve srclocs and names), and have made some progress[4]. However, I'm hitting a wall trying to implement Arc's macros. Specifically, I need to find a way for the macros themselves to use previously defined Arc functions as part of their processing. I understand that there are good reasons for Racket's hygiene and syntax phases, but I'm implementing an existing language that has its own strong opinions. I'm almost certain that accomplishing my goal is possible with the right understanding, but despite reading much of the Racket Reference, I don't truly get it yet. With that motivation in mind, what's the best way for me to become intimately familiar with Racket's runtime, execution and compilation model? Should I read through and make sure I understand the debugger? The macro stepper? Is there any kind of guide to Racket Internals? Thanks for any advice. Best, Nick [1] https://news.ycombinator.com [2] http://arclanguage.org [3] Well, really mzscheme [4] https://github.com/kogir/rark ____________________ Racket Users list: http://lists.racket-lang.org/users