In xrepl that program catches breaks as well, so that behavior is probably fine and unavoidable.
Although somehow drracket's repl managed to break out of that program. I wonder how it does that... On Sat, Apr 5, 2014 at 3:00 PM, Sam Tobin-Hochstadt <[email protected]>wrote: > What if you do this: > > (let l () (with-handlers ([void (l)]) (l))) > > This catches `exn:break` (and everything else) and calls `l`. > > Sam > > On Sat, Apr 5, 2014 at 2:54 PM, Greg Hendershott > <[email protected]> wrote: > >> thread cells are subject to GC and that's fine. The real issue is that I > >> might write a program that does (effectively) this: > >> > >> > (let l()(l)) > >> > >> and then I'm stuck. > > > > Good point, but that's not a problem. A break returns to > read-eval-print-loop. > > > > Example transcript: > > > >> (let l () (l)) > > C-cC-c > > ; user break > >> (displayln "broken but alive") > > broken but alive > >> > > > > (The double Control-C just being necessary as usual in an Emacs > comint-buffer.) > > ____________________ > > Racket Users list: > > http://lists.racket-lang.org/users > ____________________ > Racket Users list: > http://lists.racket-lang.org/users >
____________________ Racket Users list: http://lists.racket-lang.org/users

