Scheme dreams: was Scheme's Infinitely Deep Zen (was Re: Python's future bright?)

Gavin Thomas Nicol (gtn@ebt.com)
Mon, 28 Jun 1999 04:59:00 -0400


>You know, my major epiphany about programming and programming
>languages didn't really happen until about 1990, when I was at Sun.
>My group was building a large distributed system which had a need
>to support dynamic updates to the client across a geographically
>dispersed user base.

I have a similar story to tell... though it was a bit earlier at
NEC, and was a distributed hypermedia system. I ended up writing
a scheme interpreter, and working on distributed continuations
etc. which allowed me to build shared whiteboards, but also capture
the state of the system so that the version history of the collaboratively
created hypertext was always available, and so that people could connect
at any time, and receive *their* latest ui.

I still think this is the right approach for a *lot* of
WWW interactivity stuff...

I also remember playing around with a language called Phantom,
which came out around the same time as Java, but used Modula 3
syntax (with extensions). The interesting part was that the
interpreter was scheme48. I've been meaning to hack Phantom into
shape one day because the author doesn't seem interested in it
any more.

When Java first came out, one of the first things I did was to
write a scheme subset for it (kind of like SIOD). It's funny,
because I had this thing sitting around for years, with little
use for it, and recently I needed an XML-based scripting language
for a project. I simple wrote a different Reader class, and was
done with it in about 2 hours. It looks kind of like:

<define name="add">x y
<lambda>
<plus>x y</plus>
</lambda>
<define>
<add>2 2</add>

which is roughly

(define add (x y)
(lambda
(+ x y)))
(add 2 2)

There is certainly something to be said for this... especially
in light of the power of closures and continuations.