About 20 years ago I was involved in writing a control system for a movable grazing-incidence X-ray mirror, for use on Advanced Light Sources (Synchrotrons). We had the mirrors mounted on a hexapod, which gave us limited range motion in 6 axies (3 translation, 3 rotation).

The movements were very slight, and could barely be discerned by most people. So the control system was an artificial horizon display, like you find in aircraft, but with exaggerated movements on screen to help the human drivers.

This was all written in a modified (extended) version of Scheme, called STk, from one of the French Research Groups (INRIA) in Southern France. (Eric Galesio?). It had something akin to CLOS called STklos. But these were mainly Scheme CLOS-like wrappers around calls to Tk graphics routines.

At any rate, I mark the effort up as a major success at the time. We needed the Tk graphics system and I wanted a Lisp-like system that could be remotely controlled from our offices in Tucson, while the Beam Line was located in Berkeley, CA.

Today, you could certainly do a similar system with Lispworks/CAPI. But at the time, I was knee deep in Scheme on that project.

Your criticisms of Scheme are certainly valid. I don’t think that WITH-EXCEPTION-HANDLER even exists in SRFI 7 or whatever it was called. 

And I, personally, think the biggest lacking in Scheme is the macro system. Oh I know all about the raging arguments about hygienic macrology. But I wrote my own Lisp-like macro system for the STk system. I also had to extend it to provide TCP/IP connections to the outside world.

Basically, Scheme is a quick and dirty Lisp system that can be cobbled together in a few days. Common Lisp is massive in comparison.

I have waffled both ways over the decades, about which is better - 1 namespace, or multiple? For writing abstractions, like the Y-combinator, I like the lack of FUNCALL in Scheme. But for writing real code, I very much appreciate the separation of namespaces between funcitons and data that we have in Common Lisp.

- DM


On Jun 17, 2024, at 17:26, Scott L. Burson <Scott@sympoiesis.com> wrote:

It doesn’t surprise me that it’s not a “cleaned up CL” — isn’t it older than CL? Though I suppose it’s less ossified so could have evolved to be “newer.”

Hard to say, really.  While the original Scheme development was in the late 1970s and the CL standardization effort didn't get going until a few years later, CL's roots are of course much older, and it was strongly influenced by Lisp Machine Lisp which was under development at about the same time as Scheme.  The situation is fuzzy enough that I think the best you can do is to call them roughly contemporaneous, with some cross-fertilization, notably in CL's lexical scoping.

I've never attempted any substantial development in Scheme, but have wondered whether I were missing anything, so Attila's observation is of interest.

-- Scott

On Mon, Jun 17, 2024 at 4:36 PM Don Morrison <dfm@ringing.org> wrote:

On Mon, Jun 17, 2024 at 6:10 PM Attila Lendvai attila.lendvai@gmail.com wrote:

scheme is not a cleaned up CL. it’s just another dialect.

It doesn’t surprise me that it’s not a “cleaned up CL” — isn’t it older than CL? Though I suppose it’s less ossified so could have evolved to be “newer.”



Don Morrison dfm@ringing.org
“The greatest crimes in the world are not committed by people breaking
the rules. It’s people who follow orders.” – Banksy, Wall and Peace