[racket] Why isn't at-exp the default?

From: Greg Hendershott (greghendershott at gmail.com)
Date: Wed Nov 13 22:06:11 EST 2013

Lately my appreciation for `#lang at-exp ...` has grown. I've even
started to write things like:

(printf "The ~a and the ~a and the ~a\n" x y z)

instead as:

(displayln @~a{The @x and the @y and the @z})

When there's more than one or two items, this is a lot easier to write
(and change later). No more need to keep two lists in the same order.

Although I'm aware Ruby has something similar, I haven't pined for it.
It's just one example. Another is multi-line text fragments. In
general:

(define x @~a{One
              Two
              Three})

is waaaay nicer -- and editor indent friendly -- than reader "here"
strings like:

(define x #<<EOF
One
Two
Three
EOF
)

And there are more examples.

I'm not complaining about the need to type "at-exp".

But my question is, why hasn't at-exp at some point been made the
default reader for Racket?

Is it solely due to backward compatibility, the risk that existing
programs use @ in identifiers, like `(define @var)`?

Or is there some hidden cost or additional gotcha I should keep in mind?

Posted on the users mailing list.