BALL

This page has three main sections. (Note that the listings could be empty.)
more… Tip: Remember the back-button! And don't click the
number on the left.

The first item displays a term, URL, text or picture.

Followed by a (still unordered) listing of statements about this
subject. (for details follow ">"-link)

Separated by a horizontal rule a "reverse" listing of statements
referring to this item in object position.

Problems with the conversion to hygienic syntax

1. Captured Literals

While attempt to replace non-hygienic syntax (define-macro
) I discovered that this requires a huge amount of undesirable
changes. At least when done in the straight-forward way.

The problem lies the set-slot/get-slot pair. It's
purpose is to encapsulate all access to the frame type. The
type encapsulates an environment which contains key-value pairs.
Since there are just too many options how this could/should be
implemented, the decision was made (over a decade ago) to funnel
all access through the special syntax for slot access to have
single spot to switch the implementation without touching any of
those abundant occurrences.

However this leads frequently to a situation, where a lexical
bound symbol is also used a slot name. E.g.: ... (let
((capafoo (compute subset to be used) )) ... (set-slot
some-frame 'capafoo capafoo) ...)

While this works well with unhygienic syntax, hygienic syntax
will not match 'capafoo thus forcing a change to
all the source.

2. LALR

The procedural macro from the LALR parser generator is used
several times. Converting this into hygienic syntax looks
prohibitive.

Since the RScheme compiler does not support hygienic syntax
by itself, there's currently a pre-processor being used. This
would have to be changed to support unhygienic syntax too.
Alternatively the parser generator could be run for those
grammars as a separate step.

How To Proceed?

Since the second issue might require an unhygienic expansion step
anyway, we'll defer the whole change for a while. Trying to come
up with a better solution. (After all: Never touch a running
system!)