[plt-scheme] Networking protocols in Scheme?

From: Anton van Straaten (anton at appsolutions.com)
Date: Sun Jun 6 15:28:49 EDT 2004

Arie van Wingerden wrote:

> actually I am trying to sort of compare networking capabilities
> of the language REBOL with those of Scheme. Concerning the REBOL
> networking possibilities you may want to have a look at:
> http://www.rebol.com/docs/core23/rebolcore-13.html

Let's compare.  Both PLT and REBOL have support for DNS, HTTP, SMTP, POP,
FTP, NNTP, CGI, TCP, and UDP.  PLT comes with fully-fledged applications
which rely on these protocols: a web server, a web browser, and the GUI
email client, SirMail.

PLT also has support for IMAP, SSL, MIME, and BASE64, which are important
protocols & formats.  I'm not sure if REBOL supports those somewhere, but if
not, you should be asking the REBOL guys when they're going to catch up to
PLT in terms of networking support.  ;)

There are also a number of relevant third-party packages for PLT, see e.g.:

http://www.cs.utah.edu/plt/develop/, which list SSAX-SXML, a powerful XML
processing library which provides an alternative to PLT's built-in XML/HTML
handling mechanism; HtmlPrag, which provides permissive processing of HTML,
to complement PLT's; as well as support for FastCGI, MD5 digests, and HTTP
cookies.

Then there's Schematics, which includes a library for the RSS format:
http://sourceforge.net/project/showfiles.php?group_id=19879&package_id=79135

REBOL also lists support for WHOIS, FINGER, and DAYTIME.  Afaik PLT doesn't
support those, but they are very simple protocols that also are outdated
and/or unimportant; if you wanted them, they'd be easy enough to code.

Beyond the checklist of which language supports what, is how well these
features are supported.  For example, PLT's support for continuations in its
web server is very powerful, allowing you to write web applications in a
natural style, without having to artificially partition an application's
code to match the web page structure.  Continuations also support clean and
well-behaved handling of the browser's Back button by the user, as well as
browser cloning.

REBOL would have been able to do these kinds of things if support for
continuations (and tail recursion!?) hadn't been removed from the language.
That might have seemed to make sense at one time (arguably), but now people
are adding continuations into things like Java web frameworks (Cocoon) and
other scripting languages (Javascript, Python, Parrot), so REBOL is looking
like it made the wrong choice.

In short, pick Scheme and you'll be ahead of the curve for years to come,
instead of waiting for your language to add features that Scheme has had for
decades.  Scheme is the language that's copied by other languages, including
REBOL.

Anton



Posted on the users mailing list.