[racket] Why isn't at-exp the default?
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?