On Thu, Mar 18, 2021 at 5:35 PM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:

Whether "#!(import (...))" or "#lang algol60" doesn't make any difference about the kind of language being accepted. It is more about whether just the reader or more of the compiler/interpreter pipeline will be affected by such switches.

That was the reason for discussing Algol 60: it is possible for a Scheme reader to do full compilation from A60 syntax to Scheme syntax.  I further believe that Scheme's semantics make it an UNCOL in the sense of Steel-without-an-e 1960 and Macrakis 1993 <http://www.cs.cmu.edu/afs/cs/project/clisp/hackers/phg/ANDF/UNCOLtoANDF.ps.Z>.  Macrakis says:

Scheme used as an object-oriented language has several good properties: it is well-defined, it is abstract and thus uncommitted to a particular implementation style, it has very general control structure. 
 
However, it has two fatal flaws: lack of concrete data typing facilities and requirement for garbage collection. Also, none of its implementations are as efficient as implementations of traditional sequential programming languages.

The first flaw can be dealt with by erasing concrete types and the second by providing an array-based allocator when required.  Efficiency can be traded off for safety and/or simplicity.

> The good thing here is that we have a separation of concerns here:
>
> (1) Signifying that a file is to be parsed with a specific reader.
> (2) Extending the built-in reader.

The first is more general, if less convenient.

There may be some misunderstanding. (1) is not an alternative to (2) but both go hand-in-hand.

For which use cases, other than changing the lexical syntax in the middle of a file (compilation unit), can #2 do the job but not #1?



John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
Clear?  Huh!  Why a four-year-old child could understand this report.
Run out and find me a four-year-old child.  I can't make head or tail
out of it.        --Rufus T. Firefly on government reports