[plt-scheme] Additional material for the helpdesk

From: George Herson (gherson at snet.net)
Date: Sat Dec 31 02:05:28 EST 2005

--- Corey Sweeney <corey.sweeney at gmail.com> wrote:

> yes, except that instead of "would be", it already
> is ;) .  For those who
> havn't seen it, the scheme cookbook can be found at
> http://schemecookbook.org/Cookbook/TOC , and accepts
> wiki contributions.
> 
> Corey

?? Are you saying that being on the web is close
enough to being in the Help Desk, or that the scheme
cookbook is already in the PLT Help Desk?  My
findings, in case those are needed, are that the Help
Desk doesn't include the Cookbook:  
Searching on "Case Sensitivity" in the PLT Help Desk
while using language "Pretty Big", I got matches in
"Teach Yourself Scheme in Fixnum Days" and "PLT
MzScheme: Language Manual".  Searching on that string
in the search field at top right of
http://schemecookbook.org/, meanwhile, netted the
helpful
http://schemecookbook.org/view/Cookbook/CaseSensitivity.

Also, when I click on Language - Choose Language in
the PLT Help Desk I see a "Manual Search Order" of 28
documents, none of which is the Cookbook.


As to the question of including the Cookbook in the
Help Desk, I say Perhaps, but it is more important to
do the reverse: include the Help Desk in the Cookbook,
to allow one-stop knowledge shopping in support of
users eager simply to get their work done.  Links to
the various Scheme manuals incorporated into the
Cookbook would mainly provide urls for any info that
we might want to reference either from the main
Cookbook text or from the various annotations to it.  

(Experimenting in the large like this is better to
done collaboratively on the web than in a nice, stable
tool like the Help Desk, IMO.)

To take a usage example, let's say you wanted to learn
more about the difference between eq and eqv. 
Currently, you'd most likely start with searches with
the PLT Help Desk.  Searching on eqv would return 13
links:

Teach Yourself Scheme in Fixnum Days
eqv? in "t-y-scheme"

Revised^5 Report on the Algorithmic Language Scheme
(eqv? obj1 obj2) in "Equivalence predicates"
eqv? in "Auxiliary functions"

PLT MzScheme: Language Manual
eqv? in "Numbers"
eqv? in "Booleans"
eqv? in "Structure Utilities"

Intermediate Student with Lambda Language
eqv? in "eqv?"

Intermediate Student Language
eqv? in "eqv?"

Inside PLT MzScheme
eqv? in "Library Functions"
scheme_eqv in "Library Functions"

Beginning Student with List Abbreviations Language
eqv? in "eqv?"

Beginning Student Language
eqv? in "eqv?"

Advanced Student Language
eqv? in "eqv?"

and a search on eq, many, many more. If you were just
starting your PLT Scheme studies you might not know
were to proceed and be sorely tempted to instead (or
additionally, once confused) post to the mailing list.
 While this can be collegial and fun, contrast this
with the efficiency and self-sufficiency of a PHP
programmer: s/he'd go to a single web page
(http://www.php.net/manual/en/language.operators.comparison.php)
and find the official explanation of the workings of
all the various comparison operators, plus
cookbook-like user-contributed hints and examples that
have survived somewhat brutal meritocratic culling
afforded by the wild popularity of the language, and
the web.

PLT Scheme, I humbly suggest, needs the same
command-level pages with examples and user
annotations, just like http://www.php.net/manual/en/
provides for PHP.

To continue with our example, picture a page listing
eq, eqv, and = that explains /with examples/ when to
use each.  This would be for a single dialect (PLT
Scheme) and a single language level--the one that
working coders would want to use the large majority of
the time (Pretty Big, is my guess).  Knowledge search
and acquistion are a huge part of programming.  Making
this simple, quick, and painless is vital to
successfully competing with other languages for
hearts, minds, and utilization.  With its many
intrinsic advantages off-limits to procedural
languages, Scheme can win. Most programmers are
suckers for elegance.

Another example of how PHP has become successful by
keeping it simple: PHP allows dynamically changing
language settings to allow inclusion of code written
for a different configuration.  Can Scheme, similarly,
unify dialects? e.g.,
(setenv chicken1.3 (include a-chicken-script.scm)
) Just a thought from a novice.

George H.


Posted on the users mailing list.