I don't know how change the terminal IO to send eofs, but I believe that ocaml has a special ;; character in the language specially for handling situations like that. In other words, the user has to explicitly delimit REPL interactions (but they don't have to do that in other contexts).
Robby On Wed, Jun 8, 2016 at 7:19 PM, Alexis King <lexi.lam...@gmail.com> wrote: > Ah, ok, that (mostly) makes sense to me. I think this might be a > little bit complicated, though: in this language, definitions can > span multiple lines without necessarily any direct indication that > they continue. Think Haskell-style pattern matching: > > fib 0 = 0 > fib 1 = 1 > fib n = fib (n - 1) + fib (n - 2) > > In this case, I actually need to read the whole input to know what > a single form should be in the output. Therefore, I’d much rather > be handed a user’s entire input, lex the whole thing, parse it, and > produce top-level expressions Racket can understand. I’m not sure > how to elegantly implement that given the current behavior, since > I definitely want to consume multiple lines at a time when possible > (i.e. in DrRacket) but if I try and read until an EOF I will block > in the REPL. > > Is there some way around this? It seems like it would be nice for > a REPL to communicate if it is operating in multiline mode, in which > case input is separated by EOFs, or single line mode, in which case > input is separated by newlines. Of course, at that point, it seems > like it would likely make sense to simply always send EOFs to avoid > the need to check. > >> On Jun 7, 2016, at 4:56 AM, Robby Findler <ro...@eecs.northwestern.edu> >> wrote: >> >> The intention here is that you should have a notion of an expression >> that is itself consistent and you should read until you get a whole >> one of those and then just return that. The different behavior you see >> in DrRacket and at the terminal window prompt will, yes, cause >> different behavior, but it isn't supposed to be something that you >> would explicitly check for and respond to. >> >> In the case of the DrRacket window, DrRacket makes the assumption that >> your expressions will be terminated by an EOF and puts those into the >> port between each submission that the user makes in order to support >> things like typing alt-return (something that doesn't happen at the >> terminal window). >> >> Robby -- 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. For more options, visit https://groups.google.com/d/optout.