PLT Scheme is a Racket
Sure, it has parentheses, uses the
keyword lambda, provides lexical scope, and emphasizes
macros – but don’t be fooled. PLT Scheme is no minimalist embodiment
of 1930s math or 1970s technology. PLT Scheme is a cover for a gang
of academic hackers who want to fuse cutting-edge
programming-language research with everyday programming. They draw
you in with the promise of a simple and polite little Scheme, but
soon you’ll find yourself using modules, contracts, keyword
arguments, classes, static types, and even curly braces.
PLT Racket is a Scheme
Racket is still a dialect of Lisp and a
descendant of Scheme. The tools developed by PLT will continue to
support R5RS, R6RS, the old mzscheme environment, Typed Scheme,
and more. At the same time, instead of having to say “PLT’s main
variant of Scheme,” programmers can now simply say “Racket” to
refer to the specific descendant of Scheme that powers PLT’s
languages and libraries.
Anticipated Questions
Why change the name?
The Scheme part of the name PLT Scheme is misleading,
and it is often an obstacle to explaining and promoting PLT research
and tools.
For example, when you type “scheme” into Google, the first hit is
a Wikipedia entry written from an R5RS perspective. That’s
appropriate for a Wikipedia page on Scheme, but it’s not a good
introduction to PLT Scheme. As long as we call our language
Scheme, we struggle to explain our language and are usually
forced to start the explanation with a disclaimer. At the same time,
to the degree that the PLT community has defined Scheme
though market share, publications, and educational outreach, we
interfere with everyone else’s ability to define Scheme – and
many have a valid claim to that ability.
By switching to Racket, we expect to resolve this
communication problem.
What will the change look like?
DrScheme becomes
DrRacket. The
mzscheme
executable becomes
racket, and
mred becomes
gracket
(following a common convention for “GUI
racket”). We change
each
#lang scheme to
#lang racket in the Racket
distribution, although
#lang scheme will be supported for
backward compatibility. The
http://plt-scheme.org site will be
replaced by
http://plt-racket.org. The
plt-scheme mailing
list becomes the
plt-racket mailing list.
The Racket site and documentation will note that Racket is a
descendant of Scheme, but most current uses of the word “Scheme”
(which implicitly mean PLT Scheme) will be replaced by
“Racket.”
Racket programmers are Racketeers, of course.
Does this mean that PLT will no longer implement Scheme?
There will be no difference between the current #lang scheme
and the new #lang racket, but the latter will become the
preferred form.
In addition, PLT will continue to support standards such as R5RS
and R6RS. The transition from/to various Scheme languages to/from
Racket will be as easy/difficult as before.
What happens to all of the old programs, scripts,
address books, bookmarks, papers, etc. that refer to PLT
Scheme instead of Racket?
Old executables, web sites, mailing addresses, and module names will
forward to the new ones. We will work to make the transition as
painless as possible and to preserve old references for as long as
possible.
How can I tell my department that we should teach with Racket in
instead of Scheme? They’ve never heard of Racket.
If you felt comfortable claiming that PLT Scheme was Scheme
before, then you can still say that you want to teach with Scheme,
even if the environment is called DrRacket. Racket is a
descendant of Scheme, just like PLT Scheme was.
Aren’t you worried that you will lose brand recognizition by
switching from the name Scheme to Racket?
Yes. Nevertheless, we think the long-term benefit of a new name will
outweigh the short-term difficulties of changing.
Instead of picking a new name, why not just call the language
PLT?
Some of us tried that, informally. It felt awkward, because we use
PLT to refer to a group of people, and because we have used
PLT as a modifier for Scheme and other
nouns. Switching the language name from one noun to another sounds
better, it’s clearer, and it’s easier to explain.
Couldn’t you find a better name? [Insert
name here] would be better.
Thank you for the suggestion. The name Racket meets some
basic criteria: it isn’t used already, it’s easy to pronounce and
spell, and it has a vague connection to the word “scheme.” Mostly,
though, we just like it.