This is a subtask of #93
But I'm separating it out because it's a smaller task that someone could take on, and even a bad implementation would enable many more programs to compile because some racket libraries use them in non-essential ways, eg see #268