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.

  1. The first item displays a term, URL, text or picture.
  2. Followed by a (still unordered) listing of statements about this subject. (for details follow ">"-link)
  3. Separated by a horizontal rule a "reverse" listing of statements referring to this item in object position.
1103 comment >

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.


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!)

Status changed back from shelling to verified.

1000 is a > issue
1003 title > Replace non-hygienic syntax
1115 blocks > 2
1005 state > verified