Re: [Scheme-reports] ANN: first draft of R7RS small language available Eli Barzilay (29 Apr 2011 13:56 UTC)
[Scheme-reports] DELAY AND FORCE Andre van Tonder (23 Apr 2011 22:20 UTC)
[Scheme-reports] Regions of imports unspecified Andre van Tonder (23 Apr 2011 22:31 UTC)
Re: [Scheme-reports] Regions of imports unspecified John Cowan (23 Apr 2011 22:43 UTC)
Re: [Scheme-reports] Regions of imports unspecified Alex Shinn (24 Apr 2011 01:59 UTC)
[Scheme-reports] What are regions of toplevel imports? Andre van Tonder (23 Apr 2011 23:41 UTC)
[Scheme-reports] Internal syntax definition order problem Andre van Tonder (23 Apr 2011 22:39 UTC)
[Scheme-reports] Mutable exports Andre van Tonder (23 Apr 2011 22:48 UTC)
Re: [Scheme-reports] Mutable exports Alex Shinn (24 Apr 2011 02:00 UTC)
[Scheme-reports] Internal definition shadowing problems Andre van Tonder (23 Apr 2011 23:19 UTC)
[Scheme-reports] Importing identifier more than once Andre van Tonder (23 Apr 2011 23:37 UTC)

Re: [Scheme-reports] ANN: first draft of R7RS small language available Eli Barzilay 29 Apr 2011 13:55 UTC

15 minutes ago, Vitaly Magerya wrote:
>
> Folks, why do we at all match keywords (e.g. "else") lexically instead
> of textually?

Because hygiene means that scheme syntax has identifiers as something
that is conceptually separate from symbols, and that tends to roll on
to other decisions.

> The ability to rename keyword on export is one stated benefit, but I'm
> not sure this was/will ever be used.

It has been used.

Another related reason is the ability to avoid having a binding for
`else', without re-binding it just for that purpose.  (See Andre's
original post for several more.)

> Moreover many implementations have keyword and optional arguments,
> and I never heard anyone complaining that you can't rename them.

If these keywords were implemented as identifiers (and traditionally
they're not), then it would make sense to do it there too.

> Simplicity of syntax-rules is another benefit: now we've got one
> list of identifiers that are matched lexically, we'd need one extra
> list for those matched textually.

Right.  At least in Racket there is a `syntax-case*' that takes an
extra argument that is the function to identify keywords.

> There are also historical reasons, i.e. it worked fine in R5RS where no
> modules existed (provided you don't shadow "else" locally).

Right -- and that fact (the fact that `else' can be shadowed by a
local binding) is a fundamental motivation.

--
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports