At Wed, 16 Oct 2019 21:25:35 +0000, Sage Gerard wrote: > I'd like to understand the reader better, and this seems relevant to > it. In this REPL session I do not escape \S with a second \ in the > first interaction. After I introduce the slash later, the REPL never > really "recovers." Even a simple (displayln) stops producing output. > > What's happening?
You're stuck inside a string. The reader sees (regexp-match #rx"typedef (\S and then complains. After complaining, it goes back to reading expressions. At that point, the input stream still has the unconsumed characters. Specifically, the next characters are +) so, `+` is read successfully and evaluated, and the result prints #<procedure:+>. Reading again encounters the closing parenthesis by itself, so that's the next error. But the input stream still has more... " " Those three characters read ok, and the value prints as " ". The input stream continues typedef void () and so on. Your transcript ends with a double quote that is not yet closed. DrRacket's interaction area takes a different (and less confusing) approach than command-line Racket. As soon as there's any kind of error from reading and evaluating text submitted at a prompt, DrRacket (not the reader) discards the input stream and starts a fresh stream with the new prompt. But as far as the reader goes, the relevant property is that it stops consuming characters from a stream when it encounters an error. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/5da7a5b8.1c69fb81.b15dd.5858SMTPIN_ADDED_MISSING%40mx.google.com.