[racket-dev] Abort behavior different in DrRacket & Racket

From: Asumu Takikawa (asumu at ccs.neu.edu)
Date: Wed May 23 17:42:25 EDT 2012

Hi all,

In the Guide entry on control[1], there's a section detailing prompts
and abort. Here's an example from that section:

> (define (escape v)
    (abort-current-continuation
     (default-continuation-prompt-tag)
     (lambda () v)))
> (+ 1 (+ 1 (+ 1 (+ 1 (+ 1 (+ 1 (escape 0)))))))

If you run this in the command-line REPL, it'll produce 0 as the Guide
claims.  However, if you run it in DrRacket, it will not return.

It turns out that the abort handler for DrRacket is just:
  (lambda args (void))

while the abort handler for Racket is this:
  (lambda results (for-each (current-print) results))

Was this intentional or should both REPLs behave the same way for
aborts?

[1]: http://pre.racket-lang.org/docs/html/guide/prompt.html

Cheers,
Asumu

Posted on the dev mailing list.