192 lines
7.2 KiB
Racket
192 lines
7.2 KiB
Racket
#lang at-exp s-exp "shared.rkt"
|
|
|
|
(define name i)
|
|
|
|
(define (url str) (tt (a href: str str)))
|
|
|
|
;;TODO: this should be done with some common function, together with
|
|
;;translating "``" etc.
|
|
(define (split-to-paras xs)
|
|
(let loop ([cur #f] [paras '()] [xs xs])
|
|
(cond
|
|
[(null? xs) (map p (reverse (if cur (cons (reverse cur) paras) paras)))]
|
|
[cur (if (and (equal? "\n" (car xs))
|
|
(pair? (cdr xs)) (equal? "\n" (cadr xs)))
|
|
(loop #f (cons (reverse cur) paras) (cdr xs))
|
|
(loop (cons (car xs) cur) paras (cdr xs)))]
|
|
[else (loop (if (equal? "\n" (car xs)) cur (list (car xs)))
|
|
paras (cdr xs))])))
|
|
|
|
(define ((FAQ tag . ques) . answer)
|
|
@div[class: 'faqentry]{
|
|
@div[class: 'faqques]{@a[name: tag]{@ques}}
|
|
@div[class: 'faqans]{@@(split-to-paras answer)}})
|
|
|
|
(define styles
|
|
@style/inline{
|
|
.nestedheading {
|
|
text-align: center;
|
|
font-weight: bold;
|
|
font-size: large;
|
|
}
|
|
.nested {
|
|
width: 80%;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
.faqsection {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
margin-top: 2em;
|
|
width: 90%;
|
|
}
|
|
.faqques {
|
|
font-weight: bold;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
.faqans {
|
|
margin-left: 1em;
|
|
}})
|
|
|
|
(define new-name
|
|
@page[#:title "From PLT Scheme to Racket"]{
|
|
@styles
|
|
|
|
@div[class: 'nestedheading]{PLT Scheme is a Racket}
|
|
|
|
@div[class: 'nested]{Sure, it has parentheses, uses the keyword
|
|
@tt{lambda}, provides lexical scope, and emphasizes macros @|ndash| 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.}
|
|
|
|
|
|
@div[class: 'nestedheading]{Racket is a Scheme}
|
|
|
|
@div[class: 'nested]{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 @tt{mzscheme} environment, Typed Scheme, and more. At the same
|
|
time, instead of having to say @|ldquo|PLT's main variant of
|
|
Scheme,@|rdquo| programmers can now simply say @|ldquo|Racket@|rdquo| to
|
|
refer to the specific descendant of Scheme that powers PLT's languages
|
|
and libraries.}
|
|
|
|
|
|
@div[class: 'faqsection]{
|
|
@div[class: 'nestedheading]{Anticipated Questions}
|
|
|
|
|
|
@@FAQ["why"]{
|
|
Why change the name?
|
|
}{
|
|
|
|
The @name{Scheme} part of the name @name{PLT Scheme} is misleading, and
|
|
it is often an obstacle to explaining and promoting PLT research and
|
|
tools.
|
|
|
|
For example, when you type @|ldquo|scheme@|rdquo| 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
|
|
@name{Scheme}, we struggle to explain our language, and we are usually
|
|
forced to start the explanation with a disclaimer. At the same time,
|
|
to the degree that the PLT community has defined @name{Scheme} though
|
|
market share, publications, and educational outreach, we interfere with
|
|
everyone else's ability to define @name{Scheme} @|ndash| and many have
|
|
a valid claim to that ability.
|
|
|
|
By switching to @name{Racket}, we expect to resolve this
|
|
communication problem.}
|
|
|
|
|
|
@@FAQ["what"]{What will the change look like?
|
|
}{
|
|
|
|
@name{DrScheme} becomes @name{DrRacket}. The @tt{mzscheme} executable
|
|
becomes @tt{racket}, and @tt{mred} becomes @tt{gracket} (following a
|
|
common convention for @|ldquo|GUI @tt{racket}@|rdquo|). We change each
|
|
@tt{#lang scheme} to @tt{#lang racket} in the Racket distribution,
|
|
although @tt{#lang scheme} will be supported for backward
|
|
compatibility. The @url{http://plt-scheme.org} site will be replaced by
|
|
@url{http://racket-lang.org}. The @tt{plt-scheme} mailing list becomes
|
|
the @tt{racket} mailing list (@tt{users@"@"racket-lang.org}).
|
|
|
|
The Racket site and documentation will note that Racket is a descendant
|
|
of Scheme, but most current uses of the word @|ldquo|Scheme@|rdquo|
|
|
(which implicitly mean PLT Scheme) will be replaced by
|
|
@|ldquo|Racket.@|rdquo|
|
|
|
|
Racket programmers are @name{Racketeers}, of course.}
|
|
|
|
|
|
@@FAQ["scheme"]{
|
|
Does this mean that PLT will no longer implement Scheme?
|
|
}{
|
|
|
|
There will be little difference between the current @tt{#lang scheme}
|
|
and the new @tt{#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.}
|
|
|
|
|
|
@@FAQ["transition"]{What happens to all of the old programs, scripts,
|
|
address books, bookmarks, papers, etc. that refer to @name{PLT
|
|
Scheme} instead of @name{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.}
|
|
|
|
@@FAQ["edu"]{
|
|
How can I tell my department that we should teach with Racket
|
|
instead of Scheme? They've never heard of @name{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 @name{DrRacket}. Racket is a descendant of
|
|
Scheme, just like PLT Scheme was.}
|
|
|
|
|
|
@@FAQ["brand"]{
|
|
Aren't you worried that you will lose brand recognition by switching
|
|
from the name @name{Scheme} to @name{Racket}?
|
|
}{
|
|
|
|
Yes. Nevertheless, we think the long-term benefit of a new name will
|
|
outweigh the short-term difficulties of changing.}
|
|
|
|
|
|
@@FAQ["plt"]{
|
|
Instead of picking a new name, why not just call the language
|
|
@name{PLT}?
|
|
}{
|
|
|
|
Some of us tried that, informally. It felt awkward, because we use
|
|
@name{PLT} to refer to a group of people, and because we have used
|
|
@name{PLT} as a modifier for @name{Scheme} and other nouns. Switching
|
|
the language name from one noun to another sounds better, it's clearer,
|
|
and it's easier to explain.}
|
|
|
|
|
|
@@FAQ["suggestions"]{
|
|
Couldn't you find a better name?
|
|
@name{[Insert name here]} would be better.
|
|
}{
|
|
|
|
Thank you for the suggestion. The name @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 @|ldquo|scheme.@|rdquo| Mostly,
|
|
though, we just like it.}
|
|
|
|
}})
|